JavaScript是单线程指的是同一时间只能干一件事情
,只有前面的事情执行完,才能执行后面的事情。导致遇到耗时的任务时后面的代码无法执行。
同步任务和异步任务
同步任务:是按照顺序去执行的
异步任务:执行是有一个优先级的顺序的,包括了宏任务macrotasks
和微任务microtasks
宏任务包含
script(整体代码)
setTimeout
setInterval
I/O
UI交互事件
postMessage
MessageChannel
setImmediate(Node.js 环境)
微任务包含
Promise.then
Object.observe
MutationObserver
process.nextTick(Node.js 环境)
执行顺序
主线程 ==> 微任务 ==> 宏任务
new Promise((resolve, reject) => {
console.log("局长代码");
setTimeout(()=>{
console.log("计算中")
},1000)
setTimeout(()=>{
console.log("计算成功")
resolve(123)
},3000)
}).then(eee=>{
console.log("处长获得"+eee);
})
console.log("外部代码");
console.log("外部代码2");