JavaScript面试题(单题)

题型 难易度 出现频率 浏览 评论
问答题 5 0
试题信息收集不易,转发请带上出处,不甚感谢!如果您对任何编程问题还有疑问,欢迎点击下方按钮向老师提问!
问答题

宏任务和微任务对理解代码执行的顺序是非常有帮助的,特别是在有Promise,setTimeout,asyc await等这些异步处理的代码情况

我的理解是这样的,JavaScript是单线程,一次只能处理一件事情,JavaScript有同步代码和异步代码,会先执行同步代码,再来执行异步代码,而异步代码具有不确定性,如果有多个异步代码,就需要按照一种规则去执行。

这个规则里就引出了宏任务和微任务的两个概念,在异步处理中有setTimeout,setInterval,Promise,aysnc await 。那么对这些做分类setTimeout,setInterval归为宏任务,Promise,async await(是Promise的语法糖)归为微任务。执行的顺序是这样:

如果有宏任务就先执行宏任务,执行结束后,在看看有没有可执行的微任务,如果没有就开始新的宏任务,如果有就执行完所有的微任务,而后开始新的宏任务;会不断的这样循环起来,称之为事件循环。

方便理解,贴流程图


【知识梳理】宏任务/微任务的个人理解 - 掘金 (juejin.cn)

还能输入{{limitInput-commentDet.length}}个字符