例如,在使用WWW类调用Web API时,我想要返回一个值,或者对它何时完成及其状态提供一些反馈。
答案 0 :(得分:1)
那么,我,让我告诉我一个巧妙的做法!
这里我们创建一个IEnumerator,它接受一个Action(在我们的例子中是方法)作为参数,并在我们的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)
,这是一个无名声明的方法。我们称之为&#34;回调&#34;在IEnumerator中它可以被称为任何东西,重要的是它调用我们在调用方法GetSomething的参数中声明的方法。