Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
  • e003-执行打印003

e003-执行打印003


console.log('start')

setTimeout(()=> {
    console.log(1)
    Promise.resolve().then(() => {
        console.log(2)
    })
},0)

new Promise(function(resolve,reject) {
    console.log(3)
    setTimeout(() => {
      console.log(4)
      resolve(5)
    },0)
}).then((res) => {
    console.log(7)
    setTimeout(() => {
      console.log(res)
    },0)
})

答案:

start
3
1
2
4
7
5

重点解析

打印完1之后打印2,一个seTimeout 算是一个宏任务,执行第一个setTimeout 时候会打印里面的同步代码1,执行完了后,在执行下一个宏任务setTimeout之后会执行,微任务 Promise.resolve().then(() => { console.log(2) })所以会打印2


console.log('start')

setTimeout(()=> {
    console.log(1)
    Promise.resolve().then(() => {
        console.log(2)
    })
    setTimeout(()=> {
      console.log(8)
    },0)
},0)

new Promise(function(resolve,reject) {
    console.log(3)
    setTimeout(() => {
      console.log(4)
      resolve(5)
    },0)
}).then((res) => {
    console.log(7)
    setTimeout(() => {
      console.log(res)
    },0)
})

答案:

start
3
1
2
4
7
8
5
Edit this page
最近更新: 2025/6/27 02:24
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人