--- title: await slug: Web/JavaScript/Reference/Operators/await tags: - JavaScript - Оператор - Функція translation_of: Web/JavaScript/Reference/Operators/await ---
Оператор await використовується для очікування на {{jsxref("Promise","проміс")}}. Він може використовуватись лише всередині {{jsxref("Statements/async_function", "асинхронної функції")}}.
[rv] = await expression;
expressionrvПовертає значення виконаного проміса, або саме значення, якщо це не об'єкт Promise.
Вираз await спричиняє призупинення виконання асинхронної функції до встановлення об'єкта Promise (проміс) (тобто, до його вирішення або відхилення), а також відновлює виконання асинхронної функції після його завершення. Після відновлення, значенням виразу await є значення виконаного проміса.
Якщо проміс відхилено, вираз await викидає значення відхилення.
Якщо значення виразу, що стоїть після оператора await, не є об'єктом Promise, воно перетворюється на вирішений проміс.
Оператор await може розбивати хід виконання, дозволяючи коду, що викликав функцію з await, відновити виконання ще до того, як буде продовжене відкладене виконання функції з await. Після того, як await відкладає продовження своєї функції, якщо це перший оператор await, що виконується функцією, негайне виконання також продовжується поверненням у код, що викликав функцію, проміса у стані очікування для завершення виконання функції з await та для відновлення виконання коду, що її викликав.
Якщо у вираз await був переданий проміс, то вираз чекає на виконання проміса та повертає значення, що є результатом виконання.
function resolveAfter2Seconds(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}
async function f1() {
  var x = await resolveAfter2Seconds(10);
  console.log(x); // 10
}
f1();
{{jsxref("Global_Objects/Promise/then", "Промісоподібні об'єкти")}} виконуватимуться так само.
async function f2() {
  const thenable = {
    then: function(resolve, _reject) {
      resolve('вирішений!')
    }
  };
  console.log(await thenable); // вирішений!
}
f2();
Якщо значенням є не проміс, він перетворює його на вирішений проміс та чекає на нього.
async function f3() {
  var y = await 20;
  console.log(y); // 20
}
f3();
Якщо проміс відхилено, викидається значення відхилення.
async function f4() {
  try {
    var z = await Promise.reject(30);
  } catch(e) {
    console.log(e); // 30
  }
}
f4();
Обробити відхилений проміс без блока try.
var response = await promisedFunction().catch((err) => { console.log(err); });
// якщо проміс відхилено, значенням response буде undefined
| Специфікація | 
|---|
| {{SpecName('ESDraft', '#sec-async-function-definitions', 'async functions')}} | 
{{Compat("javascript.operators.await")}}