【发布时间】:2016-03-08 13:33:11
【问题描述】:
我在使用这个小应用程序时遇到了问题。从我的方法“innerFunc”中,为“self.words”中的每个单词声明并执行一次,我想访问“outerFunc”的本地范围。
我需要访问“item”,每个“innerFunc”声明都必须不同。
var self = this;
self.words = ["a", "b", "c"];
async.each(self.words,
function outerFunc (item, callback) {
var item = item;
self.item = item;
var innerFunc = function (error, response, body) {
console.log(self.words); //I can access to it.
console.log(self.item); //I can access it.
console.log(item); //Not accesible -> This is the problem
callback(null);
};
request("http://blablabla", innerFunc);
},
function(err){
//Do nothing.
}
);
问题是我可以访问“self”,这是一个在全局范围内声明的变量。但不是在声明“innerFunc”时在本地范围内声明的“项目”。我该怎么做?
另外,如果您知道实现此异步任务链的更好模式,欢迎提出建议。
【问题讨论】:
-
你能定义“不可访问”吗?
-
当你尝试访问
item时,你得到undefined吗?它会出错吗?self.item和item一样吗? -
@robertklep @Compynerd255 chrome 开发者工具说的是:
item: <not available>而self.item对于所有迭代都是“c”。
标签: javascript node.js express closures