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

73. Три async-цикла Яндекс Go: кто напечатает раньше

Сложная

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

В работе: Главный экран Яндекс Go собирает цены такси, Лавки и Еды тремя async-функциями, и порядок, в котором они обновляют экран, зависит от числа микрозадач.

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

Источник: на задачах Яндекс Go: главный экран с такси, Лавкой и Едой. Условие пересказано своими словами.

  1. async function price(i) { return 100 * i; }
  2. async function priceViaPromise(i) { return Promise.resolve(100 * i); }
  3. async function taxi() {
  4. for (let i = 1; i <= 3; i++) {
  5. await null;
  6. console.log('такси', i);
  7. }
  8. }
  9. async function lavka() {
  10. for (let i = 1; i <= 2; i++) {
  11. const p = await priceViaPromise(i);
  12. console.log('лавка', p);
  13. }
  14. }
  15. async function eda() {
  16. const p = await price(1);
  17. console.log('еда', p);
  18. }
  19. setTimeout(() => console.log('таймер'), 0);
  20. taxi();
  21. lavka();
  22. eda();
  23. Promise.resolve().then(() => console.log('then 1')).then(() => console.log('then 2'));
  24. console.log('синхронно');