【发布时间】:2018-10-31 09:31:48
【问题描述】:
我有一个处理数据数组的函数(第一个参数),一旦处理完成,它只调用一次回调函数(第二个参数)。我正在使用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。
感谢任何帮助!
【问题讨论】:
标签: node.js asynchronous promise