js中特殊的巨集任務

2022-07-11 01:51:12 字數 1072 閱讀 8953

目前只有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引擎去執行。當執行棧中的所有同步任務完成...