发电机,承诺和合作或然后收益

我正在写一个nodejs程序,并需要在初始化时间获得一些configuration数据,所以我可以实例化一个单身人士。 configuration数据回来作为承诺,这意味着我必须dynamic初始化的东西,而不是在需要的时候,所以我可以module.exports = () => return new blah(config) 。 我不想要一个工厂返回一个可靠的 – 我想要它返回一个构造函数的新实例。

我有一个内部库,获取configuration数据并返回一个承诺。 我试图使用cothen-yield或类似的库,以便我可以把事情看作是同步的(我认为这是这些库的用途,但也许我的理解是有缺陷的),大多数情况下我可以做一个返回一个实例的工厂,并不返回一个可以用实例parsing的promise

简化代码:

configuration读者:

 var read = function () { let c = projectConfig.load(); //returns a promise that resolves with config data return c; }); module.exports = {read}; 

厂:

 let factory = ty.async(function * factory () { let cfg = yield configHelper.read(); console.log('config', cfg) return new Constructor(cfg); }) module.exports = () => factory() 

指数:

 let factory = require('factory')() console.log(factory) 

当我运行程序时,我得到以下输出

 Promise { _d: { p: [Circular], c: [], a: undefined, s: 0, d: false, v: { cdn: [Object] }, h: false, n: false } } // this is from the main module config { /* correct config object data here */ } //this is from factory 

看着不同的博客文章谈论这个,我期望通过使用then-yield或co, factory应该返回具有正确的configuration参数构造函数。 但它看起来好像是无所事事,并且即时获得良率。

我误解了什么?

我误解了什么?

async函数的结果将只是一个Promise。 所以你只能用一个处理程序访问一个async函数的结果值。

在你的情况下,

 let factory = require('factory')() factory.then((consObj) => // use the Constructor object)