【发布时间】:2014-10-28 05:37:35
【问题描述】:
在继承下,当子对象扩展父对象时,需要先构造父对象,然后才能创建子对象。
但是,父构造函数的属性之一是异步(webSQL 数据库事务)。我想将数据库事务对象共享给它的所有孩子。
但是问题是子级不能立即使用事务对象,因为它是在父级创建之后的一段时间后异步创建的。
家长:
if(this.database = common.model.connections.Sync.getConnection()) {
this.database.transaction(function(transaction){
self.transaction = transaction;
});
}
请告知或向我询问更多详细信息。会欣赏任何设计模式。
【问题讨论】:
-
不确定我是否完全理解您的问题,但我认为您正在寻找 Promises:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
感谢@NickDugger 的尝试,它对我来说是新的,但由于它不能跨浏览器工作,所以无法使用,但它似乎与我的想法相似。即在构造函数中将子对象的回调方法(比如说启动)传递给父对象,然后父对象将在创建异步属性(数据库事务)后调用回调。
-
Promises 有 polyfills。我强烈建议你试一试
-
我从我的简短研究中了解到,这是为了减少回调的嵌套并使代码更有条理,但我觉得我的问题与架构相关,即使你忘记了我们在javascript,假设一个父级的属性get是异步创建的,所以基本上child没有完全完整,这也意味着父级必须知道孩子。
-
在构造函数中执行数据库操作对我来说看起来很奇怪。
标签: javascript design-patterns asynchronous architecture web-sql