--- title: await slug: Web/JavaScript/Reference/Operators/await translation_of: Web/JavaScript/Reference/Operators/await ---
Оператор await
используется для ожидания окончания {{jsxref("Promise")}}. Может быть использован только внутри {{jsxref("Statements/async_function", "async function")}}.
[rv] = await expression;
expression
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. |
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)}} |