2017-01-03 26 views

回答

1

那麼,我,讓我看看這樣做的一個整潔的方式!

這裏我們做一個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方法的參數中聲明的方法。

+0

如果我們都開始提問,我們已經有了答案,SO就變得毫無用處。此外,這並不是什麼新鮮事,這個答案中有很多問題。 – Everts

+0

@Everts如果你認爲它會幫助他人,你[可](http://stackoverflow.com/help/self-answer)提出問題並回答。這可能會有,但不幸的是,它是重複的。 – Programmer

+1

@Programmer哦哇,它幾乎相同。我的不好,我沒有找到它,並希望爲我自己提供一個未來的參考,並指出其他人也會從中受益。 Everts也許你應該添加一個建議stackoverflow刪除自我回答功能,如果你真的相信如此。 – Maakep

相關問題