gpt4 book ai didi

javascript - 清理 Javascript/Nodejs 代码

转载 作者:行者123 更新时间:2023-11-30 13:08:24 25 4
gpt4 key购买 nike

我是 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);
}

但是,我想用对象原型(prototype)上定义的另一个命名函数替换匿名函数。由于代码的结构方式,我不知道如何创建一个新函数来传递给 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 存在的同一个闭包中定义的,否则您需要使用一些东西来代理它:

async.forEach(self.someArr, function(someObj, callback){
self.somefunc(someObj.someProp, function(err, aNewObj) {
self.otherfunc(err, aNewObj, callback);
});
}, callback);

关于javascript - 清理 Javascript/Nodejs 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14783187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com