据我了解,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 }
Run Code Online (Sandbox Code Playgroud)
我的代码基于我能够在网上找到的几个例子.我究竟做错了什么?