本文主要是介绍Promise + Generator 实现 async await——《你不知道的Javascript 中卷》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
function run(gen) {var args = [].slice.call(arguments, 1), it;// 在当前上下文中初始化生成器it = gen.apply(this, args);// 返回一个Promise用于生成器完成return Promise.resolve().then(function handleNext(value){// 对下一个yield出的值运行var next = it.next(value);return (function handleResult(next) {// 生成器运行完毕了吗?if(next.done) {return next.value;}// 否则继续运行return Promise.resolve(next.value).then(// 成功就恢复异步循环,把决议的值发回生成器handleNext,// 如果value是被拒绝的promise,把错误传回生成器function handleErr(err) {return Promise.resolve(it.throw(err)).then(handleResult);});})(next);});
}function *main() { //...
}run(main);
这篇关于Promise + Generator 实现 async await——《你不知道的Javascript 中卷》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!