我想使用奇妙的异步模块为 NodeJS 编写一些不错的 Javascript 代码。我有一个值数组,我想对每个值调用一个特定的函数并将结果累积到一个数组中:我为此使用 async.map。不幸的是,如果我尝试调用的函数是我的类的原型函数,它无法读取变量值。
示例 这是我定义的测试“类”。
var async = require('async');
function ClassA() {
this.someVar = 367;
};
ClassA.prototype.test1 = function(param, callback) {
console.log('[' + param + ']The value in test is: ' + this.someVar);
callback(null, param + this.someVar);
};
ClassA.prototype.test2 = function() {
var self = this;
async.map([1,3,4,5], (self.test1), function(err, result){
if (err) {
console.log('there was an error')
} else {
console.log('Result is: ' + result)
}
})
};
module.exports = new ClassA();
这就是我使用它的方式
testclass.test1(1, function(err, data){});
testclass.test2();
这就是输出:
[1]The value in test is: 367
[1]The value in test is: undefined
[3]The value in test is: undefined
[4]The value in test is: undefined
[5]The value in test is: undefined
Result is: NaN,NaN,NaN,NaN
如您所见,通过test2
which获得的输出async.map
无法访问该this.someVar
变量。
问题 我肯定在这里遗漏了一些东西。有人可以指出错误并解释为什么它不起作用吗?我希望 367 出现在那些未定义的地方。我认为这个问题与这个 SO question 有关,但我似乎无法为我的用例找到解决方案。
感谢您的阅读,并对问题的长度感到抱歉!