私は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();
});
}
しかし、コンテキストの変更により、それは明らかに機能しません。