gpt4 book ai didi

javascript - 与 async.series 不同,async.applyEachSeries 无法引用 'this'

转载 作者:行者123 更新时间:2023-12-03 08:08:16 24 4
gpt4 key购买 nike

async.applyEachSeries的替代方案吗?

下面的一段代码在与 applyEachSeries 一起使用时无法引用 this。但是,async.series 照常工作。

this.c 是我关注的地方:

var LModel = function(){};
LModel.prototype = {

a: function (req, done) {
console.log(' FUNCTION A');
done(null,'result A');
},
b: function (req, done) {
console.log('THIS==', this.c); //THIS== undefined for applyEachSeries
console.log(' FUNCTION B');
this.c(req, function(err, res){console.log('c CALLED!'); console.log(res);});

done(null,'result B');
},
c: function (req, callback) {
console.log(' FUNCTION C');
callback(null,'result C');
}
};

module.exports = LModel;


var lanM = new LModel();

async.applyEachSeries([lanM.a, lanM.b],{},function(err, res){console.log('NEVER EXECUTED!');})

async.series([
function(callback){
// do some stuff ...
lanM.a({}, function(err, res){});

callback(null, 'one');
},
function(callback){
// do some more stuff ...
lanM.b({}, function(err, res){});
callback(null, 'two');
}
],
// optional callback
function(err, results){
// results is now equal to ['one', 'two']
});

最佳答案

您可以通过在 lanM.b 方法上使用 bind 来使其工作,如下所示:

async.applyEachSeries([lanM.a, lanM.b.bind(lanM)], {}, 
function(err, res) {
console.log('NEVER EXECUTED!');
})

关于javascript - 与 async.series 不同,async.applyEachSeries 无法引用 'this',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34270198/

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