Как следует из названия. Как мне это сделать?
Я хочу вызвать whenAllDone() после того, как forEach-loop прошел через каждый элемент и выполнил некоторую асинхронную обработку.
[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!
