Почему функции должны быть асинхронными, чтобы использовать в них ожидание? - PullRequest
0 голосов
/ 09 ноября 2018

Если я хочу дождаться функции, почему это должно быть сделано только в асинхронной функции?

Если у меня есть это:

Function myFunc() {
    return await myOtherFunc();
}

Я получаю сообщение об ошибке:«Выражение await разрешено только внутри асинхронной функции».

Я могу понять, должен ли myOtherFunc () быть асинхронным (нет смысла ожидать асинхронную функцию), но почему это важно, еслиВызывающая функция асинхронная или нет.Вы можете получить ответвление в процессе в синхронной функции из-за вызова асинхронной функции, верно?Так почему же вы не можете ждать этой асинхронной функции внутри синхронной функции?

ПРИМЕЧАНИЕ: мой вопрос НЕ является дубликатом Javascript Await / Async Feature - Что делать, если вы делаетеУ вас нет слова await в функции? .

^ этот вопрос задает вопрос, что произойдет, если await не используется в асинхронной функции.Я спрашиваю, почему функция должна быть асинхронной, чтобы использовать await.Мой ответ DougBug ниже объясняет, почему они разные.

1 Ответ

0 голосов
/ 09 ноября 2018

Изображение в следующей статье может помочь вам объяснить это немного.

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/index

Основная идея заключается в том, что ключевое слово async позволяет функции выполнять до вызова вызывающей функции.

Таким образом, любая функция, которая реализует await, должна быть помечена как асинхронная, чтобы она могла проходить обратно по вызывающему пути до тех пор, пока первый вызывающий не ожидает только того, чтобы завершить то, что ей нужно сделать.

...