对比下常用的异步处理的方案:
1,回调
我们常说的 “回调地狱”,就是多个异步操作时候,代码多重嵌套,异步之前形成强耦合,如果修改一处,其他地方也是跟着修改。(callback hell).
2,promise
其实promise的出现呢,就是为了解决回调地狱的问题,不是多重嵌套,而是链式调用,就是针对回调函数的改进,使用then的方法,但是代码依然是冗余,如果异步多的话,一堆的then。
3,Generator函数
协程(coroutine),多线程互相协作,完成异步操作。
运行流程:
协程A开始——A执行到一半,暂停,执行权到协程B——一段时间后B交还执行权——A恢复执行。
上面的协程A就是个异步的操作。执行一半停下来,过段时间再从暂停的地方开始执行。
Generator函数里面的yield命令 是异步两个阶段的分界线。
协程遇到yeild命令就暂停,等到执行权返回再从暂停的地方继续往后执行。