是否可以在发电机内包装承诺?

Dev*_*ari 7 javascript generator ecmascript-6 es6-promise

我正在尝试使用生成器创建一个promise-wrapper,以便我可以:

var asyncResult = PromiseWrapper( $.ajax( ... ) );
Run Code Online (Sandbox Code Playgroud)

到目前为止,我一直在尝试:

function PromiseWrapper(promise){
    return function *wrapper(promise){
        promise.then(function(result){
            yield result;
        }, function(err){
            throw err;
        });
    }(promise).next().value
}
Run Code Online (Sandbox Code Playgroud)

但这失败了,因为不允许在法线内屈服.这有什么解决方法吗?谢谢你:D

ps:我正在使用babel将代码从es6转换为es5

Ber*_*rgi 6

在同步产生promise结果的生成器中包装promise是完全不可能的,因为promises总是异步的.没有解决方法,除非你在异步时抛出像光纤这样的强大武器.