await
Ждёт результата промиса и возвращает его значение.
Доступно с: ES2017
Синтаксис
await promiseПримеры
Дождаться значения:
const value = await Promise.resolve('ready');
console.log(value);Результат:
readyПоследовательно и параллельно:
const wait = (ms) => new Promise((resolve) => setTimeout(() => resolve(ms), ms));
let start = Date.now();
await wait(100);
await wait(100);
console.log('sequential:', Math.round((Date.now() - start) / 100) * 100, 'ms');
start = Date.now();
await Promise.all([wait(100), wait(100)]);
console.log('parallel:', Math.round((Date.now() - start) / 100) * 100, 'ms');Результат:
sequential: 200 ms
parallel: 100 msПримечания
await можно использовать только внутри async-функции или на верхнем уровне модуля. Ошибку отклонённого промиса перехватывает обычный try...catch.
Независимые операции не ждите по очереди — запускайте их вместе через Promise.all().
См. также
- async function — Функция, которая всегда возвращает промис и внутри которой можно использовать await.
- Promise — Обещание результата, который будет готов позже: успех или ошибка.
- Promise.all — Ждёт выполнения всех промисов параллельно.
Вопросы и ответы по теме
В учебнике
- async и await — Асинхронные функции в JavaScript: async, await, обработка ошибок через try...catch, последовательное и параллельное ожидание.