异步编程
generator自动执行问题
ES7的async/await
异步编程总概述
1.异步就是为了防止阻塞、在执行时间长其他进程执行的任务的时候,交出主线程的执行权利,然后再在异步耗时操作完成后将回调函数放入js引擎执行队列中等待执行。
Promise就是为了解决这个问题而提出的。它不是新的语法功能,而是一种新的写法,允许将回调函数的横向加载,改成纵向加载。 在其他线程中执行,使用辅助线程监听然后回传。
2.再往后,就有了协程概念。这个就类似多线程了,只是每个阶段只执行了一个线程。
而到了generator就变成了协程的理念。
协程A开始执行。
协程A执行到一半,进入暂停,执行权转移到协程B。
next后,协程B交还执行权。
协程A恢复执行。
整体异步编程的逻辑就是:
callback回调 -> promise -> generator、yield、next -> generator自执行(promise、thunk)-> async/await(只是语法糖)