异步模块

Asynchronous Modules

在创建对象时使用找到的方法 here 并立即尝试访问它们,class 方法不可访问,即使对象已经创建。我如何在 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'

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

这与异步无关。这是关于 this 不是你想的那样。

在回调中,this 没有绑定任何东西,所以根据 use strict,它是全局节点对象,或者 null.

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