Spec-Zone.ru › JavaScript

SyntaxError: await действителен только в асинхронных функциях, асинхронных генераторах и модулях

Исключение JavaScript "await is only valid in async functions, async generators and modules" возникает, когда выражение await используется вне асинхронных функций, модулей или других асинхронных контекстов.

Сообщение

SyntaxError: await is only valid in async functions and the top level bodies of modules (V8-based)
SyntaxError: await is only valid in async functions, async generators and modules (Firefox)
SyntaxError: Unexpected identifier (Safari)

Тип ошибки

SyntaxError.

Что пошло не так?

Выполнение JavaScript никогда не блокируется: await никогда не может заблокировать выполнение программы. Вместо этого он приостанавливает выполнение окружающей асинхронной задачи, позволяя другим задачам продолжать работу. Следовательно, await не может использоваться в синхронных задачах, таких как функции, функции-генераторы или на верхнем уровне скриптов. Не всегда очевидно, является ли текущий файл скриптом или модулем — см. руководство по модулям для получения дополнительной информации.

Примеры

Await верхнего уровня

Вы не можете использовать await на верхнем уровне скрипта:

<script>
  await fetch("https://example.com");
  // SyntaxError: await is only valid in async functions, async generators and modules
</script>

Вместо этого сделайте скрипт модулем:

<script type="module">
  await fetch("https://example.com");
</script>

Асинхронные колбэки

Вы не можете использовать await в синхронном колбэке:

urls.forEach((url) => {
  await fetch(url);
  // SyntaxError: await is only valid in async functions, async generators and modules
});

Вместо этого сделайте колбэк асинхронным. Более подробное объяснение см. в руководстве по использованию промисов.

Promise.all(
  urls.map(async (url) => {
    await fetch(url);
  }),
);

Смотрите также

  • await

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Bad_await

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API