老师,想问一个事件循环的问题

来源:8-9 说一下React组件渲染和更新的过程

qq_流年_170

2021-04-12

在事件循环中,分为同步任务和异步任务,同步任务属于立即执行任务,所以是先执行同步任务再执行异步任务?这是第一个问题。异步任务又分为宏任务和微任务,微任务的优先级会大于宏任务。那是怎么区分宏任务和微任务的呢?请求和定时器是算宏任务还是微任务

写回答

2回答

詹姆士郭德纲

2021-06-14

宏任务(macro-task: 同步 script (整体代码),setTimeout 回调函数, setInterval 回调函数, I/O, UI rendering;
微任务(micro-task: process.nextTick, Promise 回调函数,Object.observe,MutationObserver

其执行的顺序是这样的:

1.          首先 JavaScript 引擎会执行一个宏任务,注意这个宏任务一般是指主干代码本身,也就是目前的同步代码

2.          执行过程中如果遇到微任务,就把它添加到微任务任务队列中

3.          宏任务执行完成后,立即执行当前微任务队列中的微任务,直到微任务队列被清空

4.          微任务执行完成后,开始执行下一个宏任务

5.          如此循环往复,直到宏任务和微任务被清空

//img.mukewang.com/szimg/60c7301909d8aa0305540584.jpg

0
0

双越

2021-04-13

异步的内容比较多,也比较杂。
如果你对异步还有如此的疑问,强烈建议你看看我的《前端基础面试》课程 https://coding.imooc.com/class/400.html 。
里面讲 js 异步讲的非常详细,可以先去看一看课程目录。

0
0

2024版 前端框架及项目面试 聚焦Vue3/React/Webpack

面向1-3年前端的框架及项目面试“刚需内容”

4665 学习 · 1644 问题

查看课程