Appearance
cx
Appearance
为什么需要事件循环? JS 主要用途是用来操作 DOM,如果 JS 有两个线程同时操作一个 DOM ,就会导致浏览器无法判断执行哪一个。为了避免产生这种问题,JS 必须是单线程,且未来也不会改变。
注意 Promise 本身是宏任务,then 和 catch 才是微任务 Nodejs 与 浏览器的执行机制有些微差别
const p1 = () => {
return new Promise(reslove => {
console.log('p1')
reslove()
})
}
const p2 = new Promise(reslove => {
console.log('p2')
reslove()
})
p1().then(() => {
const p3 = new Promise(reslove => {
console.log('p3')
reslove()
})
p3.then(() => {
console.log('p3 then')
})
})
p2.then(() => {
console.log('p2 then')
})
// p1, p2, p3, p2 then, p3 then