3 var util = require("./util");
4 var noAsyncScheduler = function() {
5 throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/m3OTXk\u000a");
7 if (util.isNode && typeof MutationObserver === "undefined") {
8 var GlobalSetImmediate = global.setImmediate;
9 var ProcessNextTick = process.nextTick;
10 schedule = util.isRecentNode
11 ? function(fn) { GlobalSetImmediate.call(global, fn); }
12 : function(fn) { ProcessNextTick.call(process, fn); };
13 } else if ((typeof MutationObserver !== "undefined") &&
14 !(typeof window !== "undefined" &&
16 window.navigator.standalone)) {
17 schedule = function(fn) {
18 var div = document.createElement("div");
19 var observer = new MutationObserver(fn);
20 observer.observe(div, {attributes: true});
21 return function() { div.classList.toggle("foo"); };
23 schedule.isStatic = true;
24 } else if (typeof setImmediate !== "undefined") {
25 schedule = function (fn) {
28 } else if (typeof setTimeout !== "undefined") {
29 schedule = function (fn) {
33 schedule = noAsyncScheduler;
35 module.exports = schedule;