例如,当使用 WWW 类调用 Web API 时,我想要返回一个值或有关何时完成及其状态的一些反馈。
那么,让我向我展示一种巧妙的方法吧!
这里我们创建一个 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)
这是一个无名声明的方法。我们在 IEnumerator 中将其称为“回调”,但它可以被称为任何名称,重要的是它调用我们在调用 GetSomething 方法的参数中声明的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)