一、js巨集任務和微任務
// 什麼是eventloop,就是nodejs把要執行的事件任務放入佇列中,其中任務型別分為巨集任務和微任務,當每次主線程
// 執行完後就會到任務佇列中尋找任務進行執行,先執行巨集任務,再執行巨集任務中的微任務。
// 巨集任務和微任務特徵。
// 巨集任務: settimeout() setinterval() 主體script
// 微任務: promise.then process.nexttick , 【早於下乙個巨集任務,開始於當前巨集任務的結束】
案例一、
// 1、案例一
(function() );
promise.resolve().then(() => ).then(()=>);
console.log('script_end');
})//())
// script_begin script_end promise1 promise2 settimeout1
// 解釋:先執行settimeout1,然後碰到settimeout放入任務佇列,promise1是微任務,promise2是微任務,
// 就先執行了script_end,然後執行2個微任務,再執行巨集任務。
案例二、
// 2、案例二
(function() );
new promise(function (resolve) ).then(function () )
});
// 1 ,2 ,4, 3, 5
}, 1000);
}());
// 解釋:3是巨集任務,4其實是本體執行(new promise內**不是非同步的),5是微任務。
案例三、
// 3、案例三 :(微任務直觀上面像巨集任務的子任務,primise微任務需要執行resolve才算加入當前執行巨集任務的任務佇列)
settimeout(() => ,duration);
});};
sleep(3000).then(()=>console.log("c"));
}, 1000);
// abc
// 原因,promise.then()**的微任務屬於哪個巨集任務是看resolve()在那裡執行。
JS微任務和巨集任務
1.巨集任務 包括整體 script,settimeout,setinterval i o ui 互動事件 setimmediate node.js 環境 2.微任務 promise mutaionobserver process.nexttick node.js 環境 promise.resolv...
js的巨集任務和微任務
script 主程式 settimeout setinterval setimmediate i o操作 ui渲染 requestanimationframe promise 原生 mutationobserver process.nexttick mutation object.observe 事...
js裡的微任務和巨集任務
當js解析執行時,會被引擎分為兩類任務,同步任務 synchronous 和非同步任務 asynchronous 對於同步任務來說,會被推到執行棧按順序去執行這些任務。對於非同步任務來說,當其可以被執行時,會被放到乙個任務佇列 task queue 裡等待js引擎去執行。當執行棧中的所有同步任務完成...