说我有以下代码:
function MyClass(id, x, y, z) {
var self = this;
MyModel.findByID(id, function(err, model) {
if(err) { // Do something }
self.model = model
});
this.x = x;
this.y = y;
this.z = z;
}
MyClass.prototype.myMethod = function() {
console.log(this.model.id);
}
var obj = new MyClass(123, 7, 8, 9);
obj.myMethod();
我如何确保在this.model
中设置myMethod
,因为Mongoose查询是异步的。或者我是以“非”NodeJS方式编程的?
由于
答案 0 :(得分:1)
您可以传递在数据库查询结束时运行的回调,并为目标变量分配一个值:
function MyClass(id, x, y, z, fn) {
var self = this;
this.x = x;
this.y = y;
this.z = z;
MyModel.findByID(id, function(err, model) {
self.model = model
fn.call(self);
});
};
MyClass.prototype.myMethod = function() {
console.log(this.model.id);
};
然后使用它:
var obj = new MyClass(123, 7, 8, 9, function() {
obj.myMethod();
});