diff options
Diffstat (limited to 'files/zh-cn/web/api/window/setimmediate/index.html')
-rw-r--r-- | files/zh-cn/web/api/window/setimmediate/index.html | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/files/zh-cn/web/api/window/setimmediate/index.html b/files/zh-cn/web/api/window/setimmediate/index.html new file mode 100644 index 0000000000..12016988ac --- /dev/null +++ b/files/zh-cn/web/api/window/setimmediate/index.html @@ -0,0 +1,54 @@ +--- +title: window.setImmediate +slug: Web/API/Window/setImmediate +tags: + - DOM + - setImmediate +translation_of: Web/API/Window/setImmediate +--- +<p>{{APIRef("HTML DOM")}}{{Non-standard_header}}</p> + +<p>该方法用来把一些需要长时间运行的操作放在一个回调函数里,在浏览器完成后面的其他语句后,就立刻执行这个回调函数。</p> + +<div class="note"><strong>注意:</strong> 该方法可能不会被批准成为标准,目前只有最新版本的 Internet Explorer 和Node.js 0.10+实现了该方法。<span style="font-size: 1rem; letter-spacing: -0.00278rem;">它遇到了 </span><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=686201" style="font-size: 1rem; letter-spacing: -0.00278rem;" title="https://bugzilla.mozilla.org/show_bug.cgi?id=686201">Gecko</a><span style="font-size: 1rem; letter-spacing: -0.00278rem;">(Firefox) 和</span><a href="http://code.google.com/p/chromium/issues/detail?id=146172" style="font-size: 1rem; letter-spacing: -0.00278rem;" title="http://code.google.com/p/chromium/issues/detail?id=146172">Webkit</a><span style="font-size: 1rem; letter-spacing: -0.00278rem;"> (Google/Apple) 的阻力.</span></div> + +<h2 id="语法">语法</h2> + +<pre>var immediateID = setImmediate(func, [param1, param2, ...]); +var immediateID = setImmediate(func); +</pre> + +<ul> + <li><code>immediateID</code> 是这次setImmediate方法设置的唯一ID,可以作为 {{ domxref("window.clearImmediate") }} 的参数.</li> + <li><code>func</code> 是将要执行的回调函数</li> +</ul> + +<p>所有参数都会直接传给你的函数。</p> + +<h2 id="备注">备注</h2> + +<p>{{ domxref("window.clearImmediate") }} 方法可以用来取消通过setImmediate设置的将要执行的语句, 就像 {{ domxref("window.clearTimeout") }} 对应于 {{ domxref("window.setTimeout") }}一样.</p> + +<p>该方法可以用来替代 <code>setTimeout(fn, 0)</code> 去执行<a href="http://www.nczonline.net/blog/2009/08/11/timed-array-processing-in-javascript/">繁重的操作</a>(<a href="http://www.nczonline.net/blog/2009/08/11/timed-array-processing-in-javascript/" title="http://www.nczonline.net/blog/2009/08/11/timed-array-processing-in-javascript/">heavy operations</a>) </p> + +<p>可以通过以下几种方式来模仿该功能:</p> + +<ul> + <li>{{ domxref("window.postMessage") }} 可以被用来触发一个 immediate 但会产生回调. 请注意, Internet Explorer 8包含postMessage的同步版本, 这意味着它不能被用来作为代替品.</li> + <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel" title="http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html#channel-messaging">MessageChannel</a> 可以在Web Workers 内部很好的被使用, 而postMessage 的语义意味着它不能在那使用.</li> + <li><code>setTimeout(fn, 0)</code><em>可以使用</em>, 然而按照<a href="https://html.spec.whatwg.org/multipage/webappapis.html#timers" title="http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout">HTML规范</a>, 嵌套深度超过5级的定时器, 会被限制在4ms , 他没有为setImmediate的天然及时性提供合适的polyfill.</li> +</ul> + +<p>所有这些技术都被纳入 <a href="https://github.com/NobleJS/setImmediate" title="https://github.com/NobleJS/setImmediate">robust setImmediate polyfill</a> 中.</p> + +<h2 id="浏览器兼容性">浏览器兼容性</h2> + +<p>{{Compat("api.Window.setImmediate")}}</p> + +<h2 id="相关链接">相关链接</h2> + +<p>{{ domxref("window.clearImmediate") }}</p> + +<p>{{ spec("https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/setImmediate/Overview.html", "Specification: Efficient Script Yielding") }}</p> + +<p><a class="external" href="http://ie.microsoft.com/testdrive/Performance/setImmediateSorting/Default.html">Microsoft setImmediate API Demo</a></p> |