@ImPuuLsE

Как вернуть yield www в Unity?

Здравствуйте! имеется код :
var request = WWW(apiAuthUrl, form);
yield request;
return request.text;

Выдает что generators cannot return values... Каким образом мне вернуть ответ что бы распарсить его в другой функции?
  • Вопрос задан
  • 2823 просмотра
Решения вопроса 1
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
Вариант первый - вызываете парсер прямо из корутины. Если это единственный сценарий общения с вебформами, то вполне сойдёт.
private void Start()
{
    StartCoroutine(Request(apiAuthUrl, form));
}

private IEnumerator Request(string apiAuthUrl, byte[] form)
{
    var request = new WWW(apiAuthUrl, form);
    yield return request;
    Parse(request.text);
}

private void Parse(string text)
{
    Debug.Log(text);
}

Вариант второй - отдаёте данные из корутины через колбэк. Те же яйца, вид сбоку, но больше гибкости, можно использовать один и тот же метод в разных сценариях.
private void Start()
{
    StartCoroutine(Request(apiAuthUrl, form, Parse));
}

private IEnumerator Request(string apiAuthUrl, byte[] form, Action<string> callback)
{
    var request = new WWW(apiAuthUrl, form);
    yield return request;
    callback(request.text);
}

private void Parse(string text)
{
    Debug.Log(text);
}

Я привёл код на C#, как оно выглядит в JS не представляю.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы