28 lines
863 B
JavaScript
28 lines
863 B
JavaScript
|
"use strict";
|
||
|
var schedule;
|
||
|
if (require("./util.js").isNode) {
|
||
|
var version = process.version.split(".").map(Number);
|
||
|
schedule = (version[0] === 0 && version[1] > 10) || (version[0] > 0)
|
||
|
? global.setImmediate : process.nextTick;
|
||
|
}
|
||
|
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 setTimeout !== "undefined") {
|
||
|
schedule = function (fn) {
|
||
|
setTimeout(fn, 0);
|
||
|
};
|
||
|
}
|
||
|
else {
|
||
|
schedule = function() {
|
||
|
throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/m3OTXk\u000a");
|
||
|
};
|
||
|
}
|
||
|
module.exports = schedule;
|