异步模块

时间:2015-01-04 16:21:03

标签: node.js oop asynchronous

在创建对象时使用找到here的方法并立即尝试访问它们,即使已创建对象,类方法也不可访问。我如何在Node.js中处理OOP并进行异步操作? (我不是那么担心被阻止......这是一个其他人可以访问的脚本(几乎就像一个cronjob))

修改他们的代码:

// Constructor
function Foo(bar, callback) {
  // always initialize all instance properties
  this.bar = bar;
  this.baz = 'baz'; // default value
  callback();
}
// class methods
Foo.prototype.fooBar = function() {
  return this.bar;
};
// export the class
module.exports = Foo;

如果我是异步尝试和玩这个

var p1;
var p2;
async.series([
    function(callback){
        new Foo("Foobar1", function(){
            p1 = this;
            callback(null, 'one');
        });
    },
    function(callback){
        new Foo("Foobar2", function(){
            p2 = this;
            callback(null, 'two');
        });
    }
],
// optional callback
function(err, results){
    // results is now equal to ['one', 'two']
    console.log(p1); // this produces *something*, therefore its set
    console.log(p1.fooBar()); // nope!
});

我得到TypeError: Object #<Object> has no method 'fooBar'

我做错了什么?我如何处理异步?

1 个答案:

答案 0 :(得分:0)

这与异步无关。这大概是this不符合您的想法。

在回调中,this未绑定任何内容,因此根据use strict,它可以是全局节点对象,也可以是null

在构造函数中,尝试callback.call(this)