This question already has answers here:
Javascript infamous Loop issue? [duplicate]
(5个答案)
2年前关闭。
一世,
我知道,关于SO的信息很多,但是我找不到适合自己情况的正确答案。
我有这段代码:
我的问题是在
(5个答案)
2年前关闭。
一世,
我知道,关于SO的信息很多,但是我找不到适合自己情况的正确答案。
我有这段代码:
for(var i=0; i < shop.collections.length; i++){
if(!shop.collection[i].active){
var data = {
name: shop.collection[i].name,
visible: true
};
myOwnService.createCollection(data, accessToken, function(err, response, body){
shop.collections[i].serviceId = body.id;
})
}
我的问题是在
shop
服务中未定义myOwnService.createCollection()
。在回调中访问shop
变量的正确方法是什么,那么如何更新对象以保存结果? 最佳答案
shop
在myOwnService.createCollection
函数的父范围内,因此可以在其中访问。
上面代码中唯一的问题是在i
中使用callback
,因为事件循环后将执行该值,所以它始终是最后一个值。
在IIFE
周围使用myOwnService.createCollection
包装器,以便可以传递i
的范围。
for (var i = 0; i < shop.collections.length; i++) {
if (!shop.collection[i].active) {
var data = {
name: shop.collection[i].name,
visible: true
};
(function(i) {
myOwnService.createCollection(data, accessToken, function(err, response, body) {
shop.collections[i].serviceId = body.id;
});
})(i);
}
}
关于javascript - 回调中的NodeJS局部变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48380537/
10-13 09:07