Current File : //usr/local/share/.config/yarn/global/node_modules/js-git/lib/defer.js |
"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();
}
}
}