javascript执行顺序

本文详细阐述了JavaScript的执行机制,重点讲解了同步任务和异步任务的执行顺序,包括宏任务和微任务的处理流程。通过示例解释了setTimeout、Promise及其相互之间的执行顺序,帮助读者深入理解JavaScript的事件循环机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js的执行是通过队列实现的

同步任务

首先是同步任务队列(例如console.log(“输出”))由其顺序依次先执行。

异步任务

其次是异步任务 异步任务分为宏任务和微任务,js将所有任务都放入其对应的任务队列,然后先执行微任务队列(promise),执行完后再执行宏任务队列(setTimeout)(队列是先进的先出) ,若微任务中有宏任务会继续放入队列中。

/*
*  1.先输出同步任务  0  1
*  2.继续执行 宏任务  set1 set3
*  3.进入宏任务set1  同步任务 5 微任务 res()
*  4.进入res  同步任务 2  宏任务 set2  将set2 存入宏任务队列(set3 set2)
*  4。 执行set3  同步任务 3  ,  再执行 set2  同步任务 4
* */
new Promise(res=>{
  console.log(0)
  setTimeout(()=>{ // set1
    res()
    console.log(5)

  })
}).then(()=>{
  console.log(2)
  setTimeout(()=>{ // set2
    console.log(4)
  })
})

setTimeout(()=>{ // set3
  console.log(3)

})
console.log(1)
// 0 1  5  2 3 4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值