【发布时间】:2021-10-28 05:30:15
【问题描述】:
据我了解,ECMA6 生成器应该能够屈服于返回承诺的函数,最终返回已解决/拒绝的函数。让代码读起来更像同步代码,避免回调地狱。
我正在使用带有 --harmony 和以下代码的 node.js v0.12.2。
var someAsyncThing = function() {
return new Promise(function(resolve, reject) {
resolve("I'm Resolved!");
});
};
someAsyncThing().then(function(res) {console.log(res);});
// Works as expected: logs I'm Resolved!
function* getPromise() {
var x = yield someAsyncThing();
console.log("x: " + x); // Fails x undefined
}
var y = getPromise();
console.log(y); // returns {}
console.log(y.next());
// Fails: logs { value: {}, done: false }
我的代码基于我能够在网上找到的几个示例。我做错了什么?
【问题讨论】:
-
你应该阅读这篇文章:davidwalsh.name/async-generators
-
我确实读过,这段代码部分基于他的示例。它不起作用。
-
你错过了那篇文章中最重要的部分,
runGenerator函数。 -
runGenerator 只是他自己的装饰器,不需要。他展示的第一个例子不需要它,他是这么说的。也没有其他示例需要以这种方式使用生成器。
-
很公平。看我的回答。
标签: javascript node.js ecmascript-6