Войти Регистрация
Фронтенд

43. await в forEach, for...of и Promise.all

Средняя

Что выведет код? Запишите строки по порядку, по одной на строку. Таймеры с одинаковой задержкой, поставленные в одном синхронном блоке, срабатывают в порядке постановки.

В работе: Пачка платёжных поручений: почему «все отправлены» печатается раньше ответов.

Как проверяем Код не запускаем — предскажите вывод. Пишите строки по порядку, по одной на строку; пробелы по краям не важны. Ответ один на подход: после него показываем разбор.
async/awaitциклытаймерыпромисы

Источник: на задачах Т‑Банка: отправка платёжных поручений пачкой. Условие пересказано своими словами.

  1. const delays = [300, 100, 200];
  2. const send = (ms) => new Promise((resolve) => setTimeout(() => {
  3. console.log('ответ', ms);
  4. resolve(ms);
  5. }, ms));
  6. async function main() {
  7. delays.forEach(async (ms) => {
  8. await send(ms);
  9. console.log('forEach', ms);
  10. });
  11. console.log('после forEach');
  12. for (const ms of delays) {
  13. await send(ms);
  14. }
  15. console.log('после for...of');
  16. const all = await Promise.all(delays.map(send));
  17. console.log('all', all.join(','));
  18. }
  19. main();