Window:setImmediate() 方法

已弃用: 不再推荐使用该特性。虽然一些浏览器仍然支持它,但也许已从相关的 web 标准中移除,也许正准备移除或出于兼容性而保留。请尽量不要使用该特性,并更新现有的代码;参见本页面底部的兼容性表格以指导你作出决定。请注意,该特性随时可能无法正常工作。

非标准: 该特性是非标准的,请尽量不要在生产环境中使用它!

该方法用来把一些需要长时间运行的操作放在一个回调函数里,在浏览器完成后面的其他语句后,就立刻执行这个回调函数。

语法

js
var immediateID = setImmediate(func, [param1, param2, ...]);
var immediateID = setImmediate(func);
  • immediateID 是这次 setImmediate 方法设置的唯一 ID,可以作为 window.clearImmediate 的参数。
  • func 是将要执行的回调函数

所有参数都会直接传给你的函数。

备注

clearImmediate() 方法可以用来取消通过 setImmediate 设置的将要执行的语句,就像 clearTimeout() 对应于 setTimeout() 一样。

该方法可以用来替代 setTimeout(fn, 0) 去执行繁重的操作

可以通过以下几种方式来模拟该特性:

  • postMessage() 可以被用来触发一个 immediate 但会产生回调。请注意,Internet Explorer 8 包含 postMessage 的同步版本,这意味着它不能被用来作为代替品。
  • MessageChannel 可以在 Web Workers 内部很好的被使用,而 postMessage 的语义意味着它不能在那使用。
  • setTimeout(fn, 0) 可以使用,然而按照 HTML 规范,嵌套深度超过 5 级的定时器,会被限制在 4 毫秒,它没有为 setImmediate 的天然及时性提供合适的 polyfill。

所有这些技术都被纳入 robust setImmediate polyfill 中。

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
setImmediate
DeprecatedNon-standard

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
Non-standard. Check cross-browser support before using.
Deprecated. Not for use in new websites.

参见