异步模块
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)
。
在创建对象时使用找到的方法 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)
。