Я новичок в javascript/nodejs, и я работаю над некоторым кодом, пытаясь его очистить.Очистить код Javascript/Nodejs
Я использую библиотеку nodejs async, чтобы справиться с упрощением асинхронных частей кода.
Сейчас код выглядит следующим образом:
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();
});
}
Но это, очевидно, не работает из-за изменения контекста.
Если именованная функция также использует внутреннюю переменную 'self', она не должна иметь значения. Единственный раз, когда что-то может смешно, если он использует 'this'. –
Я обновил свой вопрос, чтобы сделать его более понятным. Названная функция также использует self. –