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 放到调用栈中执行。
posted @ 2022-02-25 09:46  有肌肉的小眼睛  阅读(93)  评论(0)    收藏  举报