asynchronous方法,更新发生时迭代器应该会发生

我有一个使用Asynch.forEachSeries迭代的数组。 在迭代器中,我find了模型并进行了更新。 更新发生后,我需要迭代第二个项目。 find下面的代码。

async.eachOfSeries(stockUpdate, function (valueSU, keySU, callbackSU) { ProductVariations.findOne({id:valueSU.id}).exec(function (ePV,dPV){ dPV.available_stock = parseInt(dPV.available_stock) - Qty; dPV.save(function (errDPV) { callbackSU(); // HERE ONCE, NEXT ITERATOR SHOULD BE CALLED }); }); }, function (err) { if (err) callback(err.message); }); 

我认为你应该在承诺中包装“ProductVariations …”。 等待,直到解决。 然后调用下一个迭代器。

这个代码必须解决你的任务

 let promiseProductVariations = function (valueSU, keySU) { return new Promise(function (resolve, reject) { ProductVariations.findOne({id:valueSU.id}).exec(function (ePV,dPV){ dPV.available_stock = parseInt(dPV.available_stock) - Qty; dPV.save(function (errDPV) { if(errDPV){ reject(errDPV); }else{ resolve(); // HERE ONCE, NEXT ITERATOR SHOULD BE CALLED } }); }); })}; async.eachOfSeries(stockUpdate, function (valueSU, keySU, callbackSU) { promiseProductVariations(valueSU, keySU) .then(function () { callbackSU(); }) .catch(function (error) { if(error) console.log(error); //do thomething with error }); }, function (err) { if (err) callback(err.message); });