2 var util = require("./util");
4 var noAsyncScheduler = function() {
5 throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\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() {
18 var div = document.createElement("div");
19 var opts = {attributes: true};
20 var toggleScheduled = false;
21 var div2 = document.createElement("div");
22 var o2 = new MutationObserver(function() {
23 div.classList.toggle("foo");
24 toggleScheduled = false;
26 o2.observe(div2, opts);
28 var scheduleToggle = function() {
29 if (toggleScheduled) return;
30 toggleScheduled = true;
31 div2.classList.toggle("foo");
34 return function schedule(fn) {
35 var o = new MutationObserver(function() {
43 } else if (typeof setImmediate !== "undefined") {
44 schedule = function (fn) {
47 } else if (typeof setTimeout !== "undefined") {
48 schedule = function (fn) {
52 schedule = noAsyncScheduler;
54 module.exports = schedule;