Я делаю кусок кода, который получает часть информации из MySQL и отображает ее в пользовательском интерфейсе. проблема в том, что программа не дождалась завершения запроса MySQL и переходит прямо к отображению переменной (которая пуста, потому что результаты запроса не были выполнены вовремя)Как дождаться завершения StartCoroutine() перед продолжением
Грубая схема мой код будет:
bool notYetDone = true;
StartCoroutine(query(web));
IEnumerator query (WWW web){
yield return web;
while(notYetDone == true){
yield return new WaitForSeconds(1f);
if(web.error == null){
//no problems with the query, some code here
notYetDone = false;
} else if (web.error != null){
//some code here for handling errors
} else {
Debug.Log("i dont really know why we reached here");
}
}
}
что-то я заметил, что это, кажется, изменить значение notYetDone
и немедленно заканчивает цикл. Что-то не так в моем коде? Заранее спасибо.
попробуйте использовать web.isDone вместо notYetDone == true –
, непосредственно заменяя аргумент while аргументом web.isDone, создает бесконечный цикл. но плохо попробуйте некоторые способы использования этого. спасибо за предложение – ryuuuuuusei
Что делать, если вы используете: while (! web.isDone), поэтому, когда он закончит, это будет верно и выйдет из цикла. –