js事件循环与macro&micro任务队列-前端面试进阶

本文介绍了JavaScript的事件轮询机制,包括同步任务、异步任务、宏任务和微任务的概念。详细阐述了宏任务如setTimeout、setInterval、requestAnimationFrame,以及微任务如process.nextTick、Promise。通过实例分析了Promise和async/await的异步执行顺序,并探讨了不同环境下的执行差异。最后,提供了一道练习题以加深理解。
摘要由CSDN通过智能技术生成

背景

一天惬意的下午。朋友给我分享了一道头条面试题,如下:

async function async1(){
   
    console.log('async1 start')
    await async2()
    console.log('async1 end')
}
async function async2(){
   
    console.log('async2')
}
console.log('script start')
setTimeout(function(){
   
    console.log('setTimeout') 
},0)  
async1();
new Promise(function(resolve){
   
    console.log('promise1')
    resolve();
}).then(function(){
   
    console.log('promise2')
})
console.log('script end')

这个题目主要是考察对同步任务、异步任务:setTimeout、promise、async/await的执行顺序的理解程度。(建议大家也自己先做一下o)

当时由于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值