У меня есть некоторые асинхронные функции, которые я хочу выполнить для каждого из элементов в массиве currencyData
, как показано ниже.У меня есть следующая логика -
exports.getCurrenciesOfMerchant(req,res,function(currencyData)
{
async.each(currencyData, function (eachCurrency) {
fieldObject.currencyId=eachCurrency;
console.log("See currencyData "+fieldObject.currencyId);
//async block starts here
couponHandler.checkIFWalletExists(res,fieldObject,function(fieldObject)
{
console.log("checked wallet for curr "+fieldObject.currencyId);
if(fieldObject.hasWallet == 0)
{
exports.createWalletForUser(fieldObject,res,function(fieldObject,res){
// exports.createCoupon(fieldObject,res,function(res,fieldObject,couponId){
// return exports.couponCreationResponse(res,fieldObject,couponId);
// });
console.log("created wallet");
});
}
});
});
});
Следующий вывод -
See currencyData 5
See currencyData 6
checked wallet for curr 6
checked wallet for curr 6
created wallet
created wallet
Как видно, async.each () принял значение 6 до завершения выполнения асинхронного блока,На самом деле он никогда не запускал логику для значения 5.
Я думал, что именно здесь async.each () будет полезен.Но я не мог заставить это работать.Пробовал использовать async.forEachOf
, но получил те же результаты.