事件循环相关的几道题
第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