据我所知,ECMA6生成器应该能够将控制权传递给返回promise的函数,并最终返回已解决/拒绝的结果。这样可以使代码更像同步代码,避免回调地狱。
我正在使用带有--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 }
我基于我在网上找到的少数几个示例编写了代码。 我做错了什么吗?
runGenerator
函数。 - Felix Kling