浏览器中的事件循环:javascript
nodejs中的事件循环css
事件循环的本质java
setTimeout(()=>{ console.log('setTimeout') },0) Promise.resolve().then(() =>{ console.log('promise') }) console.log('main') // main promise setTimeout
javascript为何是单线程的?node
任务队列面试
宏任务和微任务promise
事件循环:每执行完一轮宏任务和微任务就叫作一环事件;浏览器
setTimeout(() => { console.log('setTimeout') setTimeout(() => { console.log('setTimeout2') },0) },0) Promise.resolve().then(() =>{ console.log('Promise') Promise.resolve().then(() =>{ console.log('Promise2') }) }) console.log('main') // main promise promise2 setTimeout
setTimeout(() => { // 两个setTimeout谁先进的话 谁就先出 console.log('setTimeout') Promise.resolve().then(() =>{ console.log('promise') }) },0) Promise.resolve().then(() =>{ console.log('promise2') setTimeout(() => { console.log('setTimeout2') },0) }) console.log('main') // main promise2 setTimeout promise setTimeout2
new Promise((res, rej) =>{ console.log(1) res() }).then(() =>{ console.log(2) new Promise((res,rej) =>{ console.log(3) res() }).then(() =>{ console.log(4) }).then(() =>{ console.log(5) }).then(() =>{ console.log(6) }) }).then(() =>{ console.log(7) }) .then(() =>{ console.log(8) }) // 1 2 3 4 7 5 8 6