此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Window:setImmediate() 方法

Deprecated

Avoid using this feature in new projects. This feature may be a candidate for removal from web standards or browsers.

非标准: 该特性尚未标准化。我们不建议在生产环境中使用非标准特性,因为它们在浏览器中的支持有限,且可能发生变化或被移除。不过,在没有标准选项的特定情况下,它们可以作为合适的替代方案。

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

语法

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 中。

浏览器兼容性

参见