Generator的异步编程

对比下常用的异步处理的方案:

1,回调

我们常说的 “回调地狱”,就是多个异步操作时候,代码多重嵌套,异步之前形成强耦合,如果修改一处,其他地方也是跟着修改。(callback hell).

2,promise

其实promise的出现呢,就是为了解决回调地狱的问题,不是多重嵌套,而是链式调用,就是针对回调函数的改进,使用then的方法,但是代码依然是冗余,如果异步多的话,一堆的then。

3,Generator函数

协程(coroutine),多线程互相协作,完成异步操作。

运行流程:

协程A开始——A执行到一半,暂停,执行权到协程B——一段时间后B交还执行权——A恢复执行。

上面的协程A就是个异步的操作。执行一半停下来,过段时间再从暂停的地方开始执行。

Generator函数里面的yield命令 是异步两个阶段的分界线。

协程遇到yeild命令就暂停,等到执行权返回再从暂停的地方继续往后执行。

原文地址:https://www.cnblogs.com/tangjiao/p/9050968.html