window.setImmediate
非标准
该特性是非标准的,请尽量不要在生产环境中使用它!
该方法用来把一些需要长时间运行的操作放在一个回调函数里,在浏览器完成后面的其他语句后,就立刻执行这个回调函数。
语法
var immediateID = setImmediate(func, [param1, param2, ...]); var immediateID = setImmediate(func);
immediateID
是这次setImmediate方法设置的唯一ID,可以作为window.clearImmediate
的参数.func
是将要执行的回调函数
所有参数都会直接传给你的函数。
备注
window.clearImmediate
方法可以用来取消通过setImmediate设置的将要执行的语句, 就像 window.clearTimeout
(en-US) 对应于 window.setTimeout
一样.
该方法可以用来替代 setTimeout(fn, 0)
去执行繁重的操作(heavy operations)
可以通过以下几种方式来模仿该功能:
window.postMessage
可以被用来触发一个 immediate 但会产生回调. 请注意, Internet Explorer 8包含postMessage的同步版本, 这意味着它不能被用来作为代替品.- MessageChannel 可以在Web Workers 内部很好的被使用, 而postMessage 的语义意味着它不能在那使用.
setTimeout(fn, 0)
可以使用, 然而按照HTML规范, 嵌套深度超过5级的定时器, 会被限制在4ms , 他没有为setImmediate的天然及时性提供合适的polyfill.
所有这些技术都被纳入 robust setImmediate polyfill 中.
浏览器兼容性
BCD tables only load in the browser