事件循环相关的几道题

第1题

setTimeout(() => {
  console.log(1)
}, 20)
console.log(2)
setTimeout(() => {
  console.log(3)
}, 10)
console.log(4)
for (let i = 0; i < 900000000; i++) {
    // for循环执行33ms左右
}
console.log(5)
setTimeout(() => {
  console.log(6)
}, 20)
console.log(7)
setTimeout(() => {
  console.log(8)
}, 10)
答案解析

2,4,5,7,3,1,8,6

第2题

async function async1() {
  console.log('a')
  await async2()
  console.log('b')
}
async function async2() {
  console.log('c')
}
console.log('d')

setTimeout(() => {
  console.log('e')
}, 0)

async1()

new Promise((resolve) => {
  console.log('f')
  resolve()
}).then(() => {
  console.log('g')
})
console.log('h')
答案解析

d,a,c,f,h,b,g,e

第3题

const button = document.getElementById('btn')

button.addEventListener('click', () => {
  Promise.resolve().then(() => {
    console.log('a')
  })
  console.log('b')
})
button.addEventListener('click', () => {
  Promise.resolve().then(() => {
    console.log('c')
  })
  console.log('d')
})
// 用户点击button怎么输出
// 下面代码触发的click怎么输出
button.click()
答案解析
  • 用户点击:b,a,d,c
  • button.click()b,d,a,c
Last Updated: