Сопоставьте последовательный и параллельный обход по требованиям к порядку операций
Зачем
Зачем это нужно
Проследите, куда попадает исключение из асинхронного обработчика
Получите минимальный пример без сетевых вызовов для проверки в Node.js
Вопросы
Частые вопросы
Какой запрос отправить для разбора промисов?
Разбери JavaScript для Node.js: async function run(){const out=[]; [1,2].forEach(async x=>{await new Promise(resolve=>setTimeout(resolve,x*10)); out.push(x)}); return out;} Объясни, почему сразу после const result=await run() значение JSON.stringify(result) равно "[]". Покажи последовательный вариант с for...of и параллельный с Promise.all, где сразу после await результат "[1,2]". Добавь проверку отказа одной задачи. Не выполняй код.
Как подготовить пример JavaScript к разбору?
Сократите код до функции и её вызова. Укажите версию Node.js либо браузер, вход и текст ошибки. Замените токены и адреса закрытых сервисов вымышленными значениями. Сначала попросите объяснить порядок операций, затем предложить одну правку.
Как проверить, что обход действительно дождался задач?
Локально выполните const result=await run(); console.log(JSON.stringify(result)). Таймеры 10 и 20 мс в исходном примере ещё не завершились, поэтому ожидается строка "[]". Исправленная функция должна дождаться обеих задач и сразу после await дать "[1,2]". Сериализация фиксирует состояние массива в момент проверки. Отдельно проверьте обработку отказа одной задачи.
Почему нельзя просто добавить await перед forEach?
forEach не собирает промисы своих обработчиков. Ожидание его результата не означает ожидания каждой задачи. Выбор между циклом и Promise.all зависит от нужной последовательности и допустимой нагрузки.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.