У меня есть функция, которая обрабатывает массив данных (первый параметр) и, как только обработка завершается, она вызывает только один раз функцию обратного вызова (второй параметр).Я использую forEach
для обработки элемента данных за элементом, состоящим из обработки каждого элемента в некоторых проверках и сохранения параметра в базе данных.Функция storeInDB()
выполняет сохранение и использует обратный вызов (второй параметр) после сохранения элемента.
Первый подход к коду следующий:
function doWork(data, callback) {
data.forEach(function (item) {
// Do some check on item
...
storeInDB(item, function(err) {
// check error etc.
...
callback();
});
});
}
Однако, это неправильно, поскольку функция callback
будет вызываться несколько раз (столько же, сколько элементов в массиве data
).
Я хотел бы знать, как выполнить рефакторинг моего кода, чтобы достичьжелаемое поведение, то есть только один вызов callback
после завершения работы по сохранению.Я думаю, что async мог бы помочь в этой задаче, но я пока не нашел подходящего шаблона для объединения async + forEach.
Любая помощь приветствуется!