异步与同步 、事件循环


【JS事件循环(Event Loop)】 https://mbd.baidu.com/ma/s/DvvSfkWy

异步与同步:

一开始我们写的代码是按顺序执行的,这是同步代码。 

        但同步代码很容易造成堵塞【如读取和请求时间过长】,所以出现异步。

异步就是不按顺序执行,一个任务完成后不是执行下一个任务,而是执行这个任务的回调。

事件循环

同步任务进入主线程,形成一个执行[task queue | 任务队列:  分为宏任务队列和微任务队列]

异步任务进入EventTable并注册回调函数,待制定事件完成【如ajax请求完成,timeout延迟到指定时间】,event Table会将回调函数已入Event queue|事件队列【即宏任务或微任务队列】

用例子说明

先执行宏任务,再执行微任务
遇到微任务【 Promise 、 nextTick 、 await 等】就全部执行了微任务,再下一个宏任务【注明:微任务里面的宏任务不执行】。

 settimeout【宏任务】 , promise .then()微任务需要在后面执行,是异步的,后面执行[ then 在 setTimout 前面执行