![](/img/trans.png)
[英]How to use yield (generators) with selenium webdriver promises?
[英]generators, promises and co or then-yield
我正在编写一个nodejs程序,需要在初始化期间获取一些配置数据,以便我可以实例化一个单例。 配置数据作为一个承诺返回,这意味着我必须即时初始化事情,而不是在需要的时间初始化,以便我可以module.exports = () => return new blah(config)
。 我不希望工厂返回thenable-我希望它返回构造函数的新实例。
我有一个内部库来获取配置数据并返回一个Promise。 我正在尝试使用co
或then-yield
或类似的库,以便我可以将它们看作是同步的(我认为这是这些库的用途,但也许我的理解是有缺陷的),主要是因为我可以返回实例的工厂,不返回与实例解析的promise
简化代码:
配置阅读器:
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
通过查看有关此的各种博客文章,我希望factory
通过使用then-yield或co可以返回带有正确配置参数的构造函数。 但看起来公司或公司什么也没做,却获得了收益结果。
我误会了什么?
我误会了什么?
async
功能的结果将只是Promise。 因此,您只能使用then
处理程序才能访问async
函数的结果值。
就你而言
let factory = require('factory')()
factory.then((consObj) => // use the Constructor object)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.