mirror of
https://github.com/atlanticbiomedical/biomedjs.git
synced 2025-07-02 00:47:26 -04:00
40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
![]() |
"use strict";
|
||
|
var schedule;
|
||
|
var noAsyncScheduler = function() {
|
||
|
throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/m3OTXk\u000a");
|
||
|
};
|
||
|
if (require("./util.js").isNode) {
|
||
|
var version = process.versions.node.split(".").map(Number);
|
||
|
schedule = (version[0] === 0 && version[1] > 10) || (version[0] > 0)
|
||
|
? global.setImmediate : process.nextTick;
|
||
|
|
||
|
if (!schedule) {
|
||
|
if (typeof setImmediate !== "undefined") {
|
||
|
schedule = setImmediate;
|
||
|
} else if (typeof setTimeout !== "undefined") {
|
||
|
schedule = setTimeout;
|
||
|
} else {
|
||
|
schedule = noAsyncScheduler;
|
||
|
}
|
||
|
}
|
||
|
} else if (typeof MutationObserver !== "undefined") {
|
||
|
schedule = function(fn) {
|
||
|
var div = document.createElement("div");
|
||
|
var observer = new MutationObserver(fn);
|
||
|
observer.observe(div, {attributes: true});
|
||
|
return function() { div.classList.toggle("foo"); };
|
||
|
};
|
||
|
schedule.isStatic = true;
|
||
|
} else if (typeof setImmediate !== "undefined") {
|
||
|
schedule = function (fn) {
|
||
|
setImmediate(fn);
|
||
|
};
|
||
|
} else if (typeof setTimeout !== "undefined") {
|
||
|
schedule = function (fn) {
|
||
|
setTimeout(fn, 0);
|
||
|
};
|
||
|
} else {
|
||
|
schedule = noAsyncScheduler;
|
||
|
}
|
||
|
module.exports = schedule;
|