【发布时间】:2016-06-20 10:32:21
【问题描述】:
我希望创建一个从数据库中检索信息并适当设置用户变量的类。
我的问题是,我使用的数据库 API 是异步的,这成为一个问题,因为该类在“完全构造”之前就可以访问(也就是说,构造函数已经返回)。
所需的同步方法
class User{
constructor(sql){
this.name = Database.selectQuery(sql);
}
}
var x = new User(statement);
console.log(x.name); // returns name
当前的异步方法
class User{
constructor(sql){
Database.selectQuery(sql, this, function(data, obj){
obj.name = data;
});
}
}
var x = new User(statement);
console.log(x.name); // returns undefined
我知道我可以向我的构造函数添加回调以使其异步工作,但这是个好主意吗?
【问题讨论】:
-
如果您在节点中编写代码,那么您正在编写异步代码。您正在使用回调或承诺。
-
欢迎来到“回调地狱”。
标签: javascript node.js class asynchronous synchronous