0
例如,當使用WWW類調用Web API時,我希望返回一個值或對其何時完成及其狀態的一些反饋。如何使用協程中的值或告訴它何時完成
例如,當使用WWW類調用Web API時,我希望返回一個值或對其何時完成及其狀態的一些反饋。如何使用協程中的值或告訴它何時完成
那麼,我,讓我看看這樣做的一個整潔的方式!
這裏我們做一個IEnumerator,在一個動作發生(方法在我們的例子)作爲參數,並調用它,當我們的WWW完成:
public static IEnumerator GetSomething(Action<string> callback)
{
// The www-stuff isn't really important to what I wish to mediate
WWWForm wwwForm = new WWWForm();
wwwForm.AddField("select", "something");
WWW www = new WWW(URL, wwwForm);
yield return www;
if (www.error == null)
{
callback(www.text);
}
else
{
callback("Error");
}
}
這是我們如何使用它:
StartCoroutine(
GetSomething((text) =>
{
if (text != "Error")
{
// Do something with the text you got from the WWW
}
else
{
// Handle the error
}
})
);
我們發送的參數是(text)
,這是一個無名聲明的方法。我們在IEnumerator中將其稱爲「回調」,但它可以被稱爲任何東西,重要的是它會調用我們在調用GetSomething方法的參數中聲明的方法。
如果我們都開始提問,我們已經有了答案,SO就變得毫無用處。此外,這並不是什麼新鮮事,這個答案中有很多問題。 – Everts
@Everts如果你認爲它會幫助他人,你[可](http://stackoverflow.com/help/self-answer)提出問題並回答。這可能會有,但不幸的是,它是重複的。 – Programmer
@Programmer哦哇,它幾乎相同。我的不好,我沒有找到它,並希望爲我自己提供一個未來的參考,並指出其他人也會從中受益。 Everts也許你應該添加一個建議stackoverflow刪除自我回答功能,如果你真的相信如此。 – Maakep