【发布时间】:2017-01-04 11:19:32
【问题描述】:
我想实例化一个对象,构造函数在返回之前执行异步调用。目的是进行异步柯里化。我正在使用co。以下示例失败。我做错了什么?
var co = require('co')
function asyncFunction() {
return new Promise(function (resolve) {
resolve()
})
}
function MyObject () {
co(function * () {
yield asyncFunction()
}).then(()=> {
this.runSomething = function() {
return 'something'
}
})
}
new MyObject().runSomething()
// TypeError: (intermediate value).runSomething is not a function
【问题讨论】:
-
co返回一个Promise,您无法解析。 -
当你看到一个没有任何回调的纯点符号序列的属性(如
new MyObject().runSomething()),它是同步的。您需要在主代码中进行回调。 -
别这样!允许
new MyObject()完全同步,并将任何异步的东西降级到 MyObject() 的方法。 -
这就是我所做的@Roamer。谢谢。
标签: javascript node.js promise co