厦门仿站定制模板建站,东营市建设管理局,网站初期如何推广的,美业推广平台1. 前言概览 js 是一门单线程的非阻塞的脚本语言 单线程#xff1a;只有一个主线程处理所有任务 非阻塞#xff1a;有异步任务#xff0c;主线程挂起这个任务#xff0c;等异步返回结果再根据一定规则执行 2. 宏任务与微任务
都是异步任务宏任务#xff1a;script 标签只有一个主线程处理所有任务 非阻塞有异步任务主线程挂起这个任务等异步返回结果再根据一定规则执行 2. 宏任务与微任务
都是异步任务宏任务script 标签setTimeoutsetIntervalsetImmediateI/O接口调用
微任务process.nextTickPromise.then() catch()Async/AwaitObject.observe注意Promise 本身是同步任务thencatchfinally 是异步任务
async 中 await 右边代码是同步任务之后代码是异步任务
3. 事件循环 主线程执行顺序一个宏任务script 标签- 同步任务 - 微任务 - 一个宏任务 - 宏任务中的微任务(如果有) - 下一个宏任务 - ..... 直到 js 事件执行完成。 4. 经典案例
async function async1(){console.log(1) // 同2await async2()console.log(2) // 微1
}
async function async2(){console.log(3) // 同3
}
console.log(4) // 同1
setTimeout(function(){console.log(5) // 宏1
},0)
setTimeout(function(){console.log(6) // 宏2
},3)
async1();
new Promise(function(resolve){console.log(7) // 同4resolve();console.log(8) // 同5
}).then(function(){console.log(9) // 微2
})
console.log(10) // 同6
// 输出41378102956