![](/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.