Обратный вызов после завершения всех асинхронных обратных вызовов forEach

Как следует из названия. Как мне это сделать?

Я хочу позвонитьwhenAllDone() после того, как цикл forEach прошел каждый элемент и выполнил некоторую асинхронную обработку.

[1, 2, 3].forEach(
  function(item, index, array, done) {
     asyncFunction(item, function itemDone() {
       console.log(item + " done");
       done();
     });
  }, function allDone() {
     console.log("All done");
     whenAllDone();
  }
);

Можно ли заставить его работать так? Когда вторым аргументом forEach является функция обратного вызова, которая запускается после прохождения всех итераций?

Ожидаемый результат:

3 done
1 done
2 done
All done!

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

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