发电机,承诺和共同或然后收益
generators, promises and co or then-yield
我正在编写一个nodejs程序,需要在初始化期间获取一些配置数据,以便我可以实例化一个单例。配置数据作为承诺返回,这意味着我必须即时初始化内容,而不是在需要的时间进行初始化,以便我可以module.exports = () => return new blah(config)
。我不希望工厂返回一个 thenable - 我希望它返回构造函数的新实例。
我有一个内部库,用于获取配置数据并返回承诺。我正在尝试使用 co
或 then-yield
或类似的库,以便我可以将事情视为同步的(我认为这就是这些库的用途,但也许我的理解是有缺陷的),主要是这样我就可以创建一个返回实例的工厂,并且不返回与实例一起解析的承诺
简化代码:
配置读取器:
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
应该返回带有正确配置参数的构造函数。 但看起来 co 或 ty 什么都不做,我得到了产量结果。
我误解了什么?
我误解了什么?
async
函数的结果将只是一个承诺。因此,您只能使用 then
处理程序访问 async
函数的结果值。
在您的情况下,
let factory = require('factory')()
factory.then((consObj) => // use the Constructor object)
相关文章:
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- Javascript运行php文件,然后下载文件
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 弹出窗口出现,然后退出
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 将值输入到对象,然后该对象推送到数组
- 如何临时暂停浏览器渲染,然后恢复整个页面
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 滚动然后捕捉到顶部而不是取消捕捉
- AngularJS加载JSON数据,然后从中解析/加载HTML
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- 点击相同的按钮打开模型,然后提交表单
- ThreeJS将画布中的文本渲染为纹理,然后应用于平面
- 将display属性更改为visible flicks,然后再次消失
- 什么是“;选择“;然后触发事件
- 等待300毫秒,然后使用jQuery向下滑动菜单
- 转到另一个页面,然后立即触发ScrollTo
- 发电机,承诺和共同或然后收益