window方法:setImmediate()

2018-09-25 15:01 更新

setImmediate()方法

setImmediate()方法用于中斷長時(shí)間運(yùn)行的操作,并在瀏覽器完成其他操作(如事件和顯示更新)后立即運(yùn)行回調(diào)函數(shù)。

注意:此功能是非標(biāo)準(zhǔn)的,不要在面向Web的生產(chǎn)站點(diǎn)上使用它:它不適用于每個(gè)用戶。實(shí)現(xiàn)之間可能存在很大的不兼容性,并且行為可能在將來發(fā)生變化。

此方法預(yù)計(jì)不會成為標(biāo)準(zhǔn),并且僅由Internet Explorer和Node.js 0.10+的最新版本實(shí)現(xiàn)。它遇到了來自Gecko (Firefox)和Webkit(谷歌/Apple)的雙重阻力。

setImmediate()方法語法

var immediateID = setImmediate(func,[ param1,param2,...]);
var immediateID = setImmediate(func);
  • 其中immediateID是是立即標(biāo)記的ID,稍后可以與window.clearImmediate一起使用。
  • func是你想要調(diào)用的函數(shù)能。

所有參數(shù)都將直接傳遞給您的函數(shù)。

筆記

該window.clearImmediate方法可用于清除即時(shí)操作,就像window.clearTimeout對window.setTimeout。

可以使用此方法代替setTimeout(fn, 0)方法來執(zhí)行繁重的操作。 

可以通過幾種不同的方式模擬該功能:

  • window.postMessage可用于觸發(fā)即時(shí)但產(chǎn)生回調(diào)。請注意,Internet Explorer 8包含postMessage的同步版本,這意味著它不能用作后備。
  • MessageChannel可以在Web Workers中可靠地使用,而postMessage的語義意味著它不能在那里使用。
  • setTimeout(fn, 0)可能會被使用,但是因?yàn)楦鶕?jù)HTML規(guī)范嵌套超過5深度的定時(shí)器,它被限制為4ms  ,它不能為setImmediate的自然即時(shí)性提供合適的polyfill。

所有這些技術(shù)都被整合到一個(gè)強(qiáng)大的setImmediate polyfill中。

規(guī)范

不屬于任何規(guī)范,也不屬于標(biāo)準(zhǔn)軌道。

瀏覽器兼容性

電腦端 移動端
Chrome
Edge
Firefox
Internet Explorer
Opera
Safari
Android webview Chrome for Android
Edge Mobile Firefox for Android
Opera for Android
iOS Safari
基本支持
(非標(biāo)準(zhǔn))
不支持 支持 不支持 支持:10 不支持 不支持 不支持 不支持 支持 不支持 不支持 不支持
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號