await

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.

Оператор await используется для ожидания окончания Promise. Может быть использован только внутри async function или на верхнем уровне модуля.

Синтаксис

[rv] = await expression;
expression

Promise или любое другое значение для ожидания разрешения.

rv

Возвращает полученное из Promise значение, либо само значение, если оно не является Promise.

Описание

Оператор await заставляет функцию, объявленную с использованием оператора async, ждать выполнения Promise и продолжать выполнение после возвращения Promise значения. Впоследствии возвращает полученное из Promise значение. Если типом значения, к которому был применён оператор await, является не Promise, то значение приводится к успешно выполненному Promise.

Если Promise отклоняется, то await генерирует исключение с отклонённым значением.

Примеры

await ожидает разрешения Promise и возвращает полученное значение.

js
function resolveAfter2Seconds(x) {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

async function f1() {
  var x = await resolveAfter2Seconds(10);
  console.log(x); // 10
}
f1();

Если типом значения является не Promise, значение преобразуется к успешно выполненному Promise.

js
async function f2() {
  var y = await 20;
  console.log(y); // 20
}
f2();

Если Promise отклонён, то выбрасывается исключение с переданным значением.

js
async function f3() {
  try {
    var z = await Promise.reject(30);
  } catch (e) {
    console.log(e); // 30
  }
}
f3();

Обработка отклонённого Promise без try/catch блока.

js
var response = await promisedFunction().catch((err) => {
  console.log(err);
});
// response получит значение undefined, если Promise будет отклонён

Спецификации

Specification
ECMAScript® 2025 Language Specification
# sec-async-function-definitions

Совместимость с браузерами

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
await
Use at module top level

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
See implementation notes.

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