我正在使用異步方法來遍歷並構建一個名爲coupon_bo
的對象。在processbo
功能裏面出乎意料的是,我看到了一個副作用,其中coupon_bo
對象的最後一個副本可用於processbo
函數。async nodejs中的每個變量作用域
我的理解是,由於coupon_bo
對於每次迭代都是局部的,因此應該有一個用於迭代的新對象。
我錯過了什麼嗎?
function hitApplyLogic(coupon_names, coupons_list, req, callback) {
async.each(coupon_names, function(coupon_name, callback) {
var coupon_bo = new coupon_objects.CouponsBO();
coupon_bo.incoming_request = req.body;
coupon_bo.incoming_request['coupon_code'] = coupon_name.cn;
coupon_bo.incoming_request['list_offers'] = true;
setTimeout(function()
{
console.log("CONSOLE-BO: " + JSON.stringify(coupon_bo));
}, 1000);
});
}
請放些代碼,像你在哪裏調用回調和所有 –
async.each()異步運行並可能破壞你的數據'coupon_bo'。您可能喜歡使用'async.eachSeries()'或使用'this.coupon_bo'而不是'var coupon_bo' –
@ suraj99934在函數內部調用回調函數(result){} –