js 同步模式 异步编程 Event Loop 消息队列 宏任务、微任务及运行机制
## 同步模式
同步模式指的是我们的 javascript 代码要依次执行,后面的代码要等待前一句代码执行完成才能执行,排队执行,javascript 代码大多数是以同步模式进行执行的
## 异步模式
异步模式指的是我们的 javascript 代码不会等待前面的代码执行完毕才开始执行。
我们将执行的代码放入到调用栈中执行,如果是同步的直接执行,如果是异步的则放入消息队列中等待执行,等到所有的代码执行完毕,我们的 event loop 就上场了,它会监听调用栈和消息队列中的任务,当调用栈中所有的任务结束以后,它会从消息队列中依次取出回调函数压入到调用栈,开始执行,直到整个循环结束
## JS 异步编程:
我们将执行的代码放入到调用栈中执行,如果是同步的直接执行,如果是异步的则放入消息队列中等待执行,等到所有的代码执行完毕,我们的 event loop 就上场了,它会监听调用栈和消息队列中的任务,当调用栈中所有的任务结束以后,它会从消息队列中依次取出回调函数压入到调用栈,开始执行,直到整个循环结束.
## Event Loop:
主线程从消息队列中读取事件,这个过程是循环不断的,所以整个的这种运行机制称为 Event Loop(事件循环),Event Loop 是 javascript 的执行机制
## 消息队列:
消息队列是暂时存放异步任务的地方,我们的异步代码会存放到消息队列中,等到同步代码执行完毕以后,event loop 会从消息队列中依次取出异步任务放到调用栈中再次执行。
## 宏任务、微任务:
宏任务:当前调用栈中执行的代码成为宏任务,包括 主代码块 ,定时器
微任务:宏任务执行完,在下一个宏任务开始之前需要执行的任务,可以理解为回调函数 例如 promise 的 then 方法
## 运行机制:
1、在执行栈中执行一个宏任务
2、执行过程中遇到微任务,将微任务添加到消息队列中
3、当前宏任务执行完毕,立即执行微任务队列中的任务
4、微任务执行完毕后,把下一个宏任务放到消息队列中,通过 eventloop 放到调用栈中执行。

浙公网安备 33010602011771号