123456789101112131415161718192021222324252627282930313233 |
- "use strict";
- var timeouts, messageName;
- // node.js
- if (typeof process === "object" && typeof process.nextTick === "function") {
- module.exports = process.nextTick;
- }
- // some browsers
- else if (typeof setImmediate === "function") {
- module.exports = setImmediate;
- }
- // most other browsers
- else {
- timeouts = [];
- messageName = "zero-timeout-message";
- window.addEventListener("message", handleMessage, true);
- module.exports = function (fn) {
- timeouts.push(fn);
- window.postMessage(messageName, "*");
- };
- }
- function handleMessage(event) {
- if (event.source == window && event.data == messageName) {
- event.stopPropagation();
- if (timeouts.length > 0) {
- var fn = timeouts.shift();
- fn();
- }
- }
- }
|