我是 javascript / nodejs 的新手,我正在尝试清理一些代码。
我正在使用async nodejs 库来处理使代码的异步部分更容易。
现在代码如下所示:
Object.prototype.method = function(){
var self = this;
// bunch of code
async.forEach(self.someArr, function(someObj, callback){
self.somefunc(someObj.someProp, function(err, aNewObj) {
if (err) {
return callback(err);
}
self.someOtherArr.push(aNewObj.someOtherProp);
callback();
});
}, callback);
}
但是,我想用对象原型上定义的另一个命名函数替换匿名函数。由于代码的结构方式,我不知道如何创建一个新函数来传递async.forEach
,同时保留正确的self
值。
我希望它看起来像什么:
AnObject.prototype.method = function(){
var self = this;
// bunch of code
async.forEach(self.someArr, self._newMethod, callback);
}
AnObject.prototype._newMethod = function(someObj, callback){
var self = this;
self.somefunc(someObj.someProp, function(err, aNewObj) {
if (err) {
return callback(err);
}
self.someOtherArr.push(aNewObj.someOtherProp);
callback();
});
}
但这显然行不通,因为上下文发生了变化。