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 中。
浏览器兼容性
BCD tables only load in the browser