从回调中调用对象属性

时间:2014-10-28 14:35:37

标签: javascript node.js async.js

我有一个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。

有干净的方法吗?

1 个答案:

答案 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;

您现在应该注意到function1function2在文件中全局定义。这意味着它们可以在彼此内部自由调用。