目前只有ie10+和nodejs支援該api。
立即觸發**函式,使其進入巨集任務佇列(macro task queue)
語法:
// 只有乙個引數
setimmediate(callback)
比settimout(fn, 0)的執行順序要快,效能也更高。因為settimeout(fn,0)實質上會有4ms的延遲。
1. 作用
messagechannelapi允許我們新建乙個訊息通道,並通過它的兩個屬性port1和port2進行通訊。
實質是通過乙個埠傳送資料,另乙個埠通過onmessage監聽另乙個埠傳送的資料。
觸發方式:
同步觸發,即port傳送資料時立即觸發。所以會比settimeout(fn,0)觸發要早。
廣州品牌設計公司
2. 使用
messagechannel是個建構函式。使用前需要建立例項,生成一條訊息通道。
const channel = new messagechannel();
例項自帶兩個埠,即訊息通道的兩端
const port1 = channel.port1;
const port2 = channel.port2;
示例:(模擬setimmediate)
const channel = new messagechannel();
const port1 = channel.port1;
const port2 = channel.port2;
port1.onmessage = function(e)
settimeout(function() )
port2.postmessage(『hello world『); //立即
promise.resolve().then(() => )
// 執行結果
then
hello world
settimeout
js的巨集任務和微任務
script 主程式 settimeout setinterval setimmediate i o操作 ui渲染 requestanimationframe promise 原生 mutationobserver process.nexttick mutation object.observe 事...
JS微任務和巨集任務
1.巨集任務 包括整體 script,settimeout,setinterval i o ui 互動事件 setimmediate node.js 環境 2.微任務 promise mutaionobserver process.nexttick node.js 環境 promise.resolv...
js裡的微任務和巨集任務
當js解析執行時,會被引擎分為兩類任務,同步任務 synchronous 和非同步任務 asynchronous 對於同步任務來說,會被推到執行棧按順序去執行這些任務。對於非同步任務來說,當其可以被執行時,會被放到乙個任務佇列 task queue 裡等待js引擎去執行。當執行棧中的所有同步任務完成...