15/12/23 19:30:41.11 eV/cz9Fn.net
非同期処理について質問です。
WWWクラスでサーバのAPIを叩いて、進行に必要なデータを取ってこようとしています(シナリオテキストとか)
───────
private string url = "URLリンク(hoge.com";)
public void Request<T>(Action<string> finalStep)
{
WWW www = new WWW(url, form); //formはWWWFrom。略
StartCoroutine(WaitResult<T>(www, finalStep));
}
private IEnumerator WaitResult<T>(WWW www, Action<string> finalStep)
{
while (!www.isDone)
{
if (!String.IsNullOrEmpty(www.error))
{
yield break; //エラー処理を追加
}
else if (StartTime.AddSeconds(timeoutSec) < DateTime.Now)
{
yield break; //タイムアウト処理を追加
}
yield return null;
}
finalStep(www.text);
yield return null;
}
───────
呼ぶ方は終わった時の処理をデリゲートで渡す感じにしようと思っていますが、
こういう感じの実装って違和感無いでしょうか。
ぐぐってもいまいち出てこなかったんですが、他に王道のやり方ってありますか?