我有一个async.series()从另一个javascript对象调用一个函数:
main.js
var object1 = require('./object1');
var object1 = require('./object2');
async.series([
object1.myFunction1,
object2.anotherFunction
]);
object1.js
module.exports = {
function1: function(callback){
async.each(someArray, function(item, cb) {
function2(item);
}, function(err){
if(err) return callback(err);
callback();
});
},
function2:function(item, callback){
//Do something
}
};
此代码不起作用,因为function2在回调中未定义。我试着把
var refToFunction2 = this.function2
在function1的开头。如果我们直接调用function1,它可以工作,但是这里function1由async调用,原因如下:this = undefined。
有干净的方法吗?
答案 0 :(得分:1)
您可以通过以下方式设置 object1.js 文件:
var async = require('async');
function function1(callback){
async.each(someArray, function(item, cb) {
function2(item);
}, function(err){
if(err) return callback(err);
callback();
});
}
function function2(item, callback){
//Do something
}
module.exports.function1 = function1;
module.exports.function2 = function2;
您现在应该注意到function1
和function2
在文件中全局定义。这意味着它们可以在彼此内部自由调用。