--- title: await slug: Web/JavaScript/Reference/Operators/await translation_of: Web/JavaScript/Reference/Operators/await ---
{{jsSidebar("Operators")}}

Оператор await используется для ожидания окончания {{jsxref("Promise")}}. Может быть использован только внутри {{jsxref("Statements/async_function", "async function")}}.

Синтаксис

[rv] = await expression;
expression
{{jsxref("Promise")}} или любое другое значение для ожидания разрешения.
rv

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

Описание

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

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

Примеры

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

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.

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

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

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

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

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

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

Specification Status Comment
{{SpecName('ESDraft', '#sec-async-function-definitions', 'async functions')}} {{Spec2('ESDraft')}} Initial definition in ES2017.

Поддержка браузерами

{{CompatibilityTable}}
Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support {{CompatChrome(55)}} {{CompatVersionUnknown}} {{CompatGeckoDesktop("52.0")}} {{CompatUnknown}} {{CompatOpera(42)}} 10.1
Feature Android Android Webview Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatGeckoMobile("52.0")}} {{CompatUnknown}} {{CompatOpera(42)}} 10.1 {{CompatChrome(55)}}

See also