JS 主线程 宏任务 微任务 执行顺序

JS 主线程 宏任务 微任务 执行顺序

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");