diff --git a/packages/marko/src/runtime/nextTick-browser.js b/packages/marko/src/runtime/nextTick-browser.js deleted file mode 100644 index e67e14c51e..0000000000 --- a/packages/marko/src/runtime/nextTick-browser.js +++ /dev/null @@ -1,32 +0,0 @@ -var win = window; -var setImmediate = win.setImmediate; - -if (!setImmediate) { - if (win.postMessage) { - var queue = []; - var messageName = "si"; - win.addEventListener( - "message", - function(event) { - var source = event.source; - if (source == win || (!source && event.data === messageName)) { - event.stopPropagation(); - if (queue.length > 0) { - var fn = queue.shift(); - fn(); - } - } - }, - true - ); - - setImmediate = function(fn) { - queue.push(fn); - win.postMessage(messageName, "*"); - }; - } else { - setImmediate = setTimeout; - } -} - -module.exports = setImmediate; diff --git a/packages/marko/src/runtime/nextTick.js b/packages/marko/src/runtime/nextTick.js index 51f167c982..c9288fd472 100644 --- a/packages/marko/src/runtime/nextTick.js +++ b/packages/marko/src/runtime/nextTick.js @@ -1 +1,15 @@ -module.exports = process.nextTick; +var promise; +module.exports = + typeof queueMicrotask === "function" + ? queueMicrotask + : typeof Promise === "function" && (promise = Promise.resolve()) + ? function(cb) { + promise.then(cb).catch(rethrow); + } + : setTimeout; + +function rethrow(err) { + setTimeout(function() { + throw err; + }); +} diff --git a/packages/marko/src/runtime/package.json b/packages/marko/src/runtime/package.json index 6e7b2bf353..fba96b38ca 100644 --- a/packages/marko/src/runtime/package.json +++ b/packages/marko/src/runtime/package.json @@ -1,6 +1,5 @@ { "browser": { - "./nextTick": "./nextTick-browser.js", "./index.js": "./index-browser.js" } }