ES6用同步的写法处理异步逻辑

2017-06-06  本文已影响0人  死鱼

似乎大部分JS的文章都会拿callback hell来做开场白

那我也拿了。↑

从ES6出来就听说有一种来自黑魔法:“用同步的写法处理异步问题”;


直到接触egg.js,我才开始研究他的实现方式。经过2个钟头的试错,终于得出了一个简陋的结果。

贴上代码

1、首先把所有需要异步处理的内容封装成Promise。

2、主函数是一个Generator函数。

3、执行主函数不是单纯调用主函数,而是判断yield回来的是不是Promise对象。

4、如果是Promise对象,那么then一下,把resolve的数据传入下个next中。

5、这时候如图中,主逻辑中的"var result = " ,就被赋值了Promise的resolve结果了。


这样写的好处是让主逻辑本该的异步代码变成同步代码写法,用ES6 Generator的特性,把主逻辑的函数执行权交给了Promise对象。

有种“协程”的感觉。

上一篇 下一篇

猜你喜欢

热点阅读