), тогда и только тогда он берет первую операцию в асинхронной очереди и выполняет ее; затем, когда это заканчивается, запускается тот, что после этого, и так далее. То есть независимо от того, сколько асинхронных заданий вы запускаете, одновременно будет выполняться только одно.

од выглядит так:

someArray.forEach(x => {
// do something
console.log(‘calling api for ‘ + x);
callAnHttpApiAsync(...);
sleep(10);
});

HTTP-вызов API является асинхронным (но я не использую какой-либо синтаксис await / async) и регистрирует что-то, как только API отправляет ответ обратно. Что происходит, так это то, что цикл forEach завершен, и я начинаю видеть зарегистрированные ответы ТОЛЬКО после этого. Я ожидаю увидеть некоторые ответы до окончания цикла (я пытался увеличить количество сна), но независимо от того, как долго я жду или как долго цикл, ответы регистрируются всегда после завершения цикла. Я использую библиотеку сна узла. Я вижу что-то вроде этого:

calling api for 1
calling api for 2
calling api for 3
...
calling api for 10000
got response for 1
got response for 2
got response for 3
...
got response for 10000   

Я уже решил эту проблему с помощью for-of и await / async (пожалуйста, дайте мне знать, если у вас есть лучшие идеи), но я не могу понять причину этого странного поведения. Почему я получаю ответы только после полного цикла? Есть идеи? Извините за форматирование, но я на мобильном.

Ответы на вопрос(1)

Ваш ответ на вопрос