【前端面试必读】setTimeout 、 promise、async await 的执行顺序?宏任务、微任务,分别包含哪些?

本文详细阐述了JavaScript中的同步任务和异步任务,重点讲解了宏任务和微任务的区别以及执行顺序。通过例子说明了setTimeout、Promise.then和async/await的执行流程,指出在遇到await时,async函数会将后续代码放入微任务队列,从而解释了"async1 end"为何在"setTimeout"之前执行。
摘要由CSDN通过智能技术生成

JS 分为同步任务和异步任务
同步任务在主线程上执行
异步任务放在主线程之外的一个任务队列
主线程执行完毕后,读取任务队列的内容

宏任务(macro)task:当前主线程上执行的就是一个宏任务。例: script 的代码、setTimeout、setInterval、postMessage等。
微任务:microtask。例:Promise.then、await后面的代码。
在执行当前宏任务时(同步执行时),遇到 setTimeout 会把它放到宏任务队列。遇到Promise.then会放到微任务队列。
当前 宏任务 执行完毕后,会先查看微任务队列,如果有任务,优先执行,否则执行下一个宏任务。所以 promise.then 会先于 setTimeout执行。

//请写出输出内容
async function async1() {
   
    console.log('async1 start'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值