事件循环就是指js中事件的的执行顺序
js是单线程的,而任务分为
同步任务
异步任务 异步任务又分为
宏任务 script setimeout ajax ui render
微任务 promissory.nextick Promiss async / await
1.所有代码分为同步任务和异步任务,执行所有代码,同步任务进入主线程,形成执行站,异步任务进入事件表格。
2.表格中异步代码ok后进入,任务队列
3.任务队列分为宏任务队列,微任务队列,主线程ok,执行微任务,微任务全部执行,再执行下一个宏任务,将下一个宏任务放到执行站,区分同步代码异步循环往复
4.都是从一个宏任务开始,结束可能是一个宏任务也肯能是一个微任务。
注意事件循环里的难分析的是promiss
宏任务与微任务常常会有嵌套关系
1.宏->宏 加入宏任务队列
2.宏->微 加入微任务队列
3.微->宏 加入宏任务队列
4.微->微 新的微任务放入微任务队列,且会在下一个宏任务之前马上执行
/
new promiss。。。。。then。。。
then之前是同步任务
then之后是微任务
async 和 await
await前同步任务
await后是微任务
注意promiss的。then一定要有返回结果才可以调用,放到微任务队列里。
async和await !!async2有疑问!!!
此题关键在于了解async的特性及await关键字的作用,在含有await的async中,同一代码块中await后的所有代码将被放置返回的promise的then方法中执行,也即await后的代码将被加载进微任务队列,同时不含await的async函数与普通函数没有任何差别,由此不难得出结果为