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

70. for await по складам и асинхронный генератор пунктов выдачи

Средняя

Что выведет код? Запишите строки по порядку, по одной на строку.

В работе: Остатки по трём складам Wildberries приходят за 100–300 мс; for await покажет их в порядке массива, а не в порядке ответа.

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

Источник: на задачах Wildberries: остатки на складах и пункты выдачи. Условие пересказано своими словами.

  1. const wait = (ms, v) => new Promise((r) => setTimeout(() => r(v), ms));
  2. async function* pickupPoints() {
  3. console.log('генератор стартовал');
  4. yield wait(300, 'ПВЗ на Ленина');
  5. yield 'ПВЗ на Мира';
  6. const x = yield wait(100, 'ПВЗ у метро');
  7. console.log('в генератор пришло', x);
  8. }
  9. async function main() {
  10. setTimeout(() => console.log('таймер 150 мс'), 150);
  11. const stock = [wait(300, 'Коледино'), wait(100, 'Электросталь'), 'Казань'];
  12. for await (const s of stock) console.log('склад', s);
  13. const gen = pickupPoints();
  14. console.log('генератор создан');
  15. for await (const p of gen) console.log('пункт', p);
  16. const it = pickupPoints();
  17. const a = it.next();
  18. const b = it.next();
  19. console.log((await b).value, '|', (await a).value);
  20. }
  21. main();
  22. console.log('синхронный конец');