123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- "use strict";
- module.exports = rawAsap;
- function rawAsap(task) {
- if (!queue.length) {
- requestFlush();
- flushing = true;
- }
-
- queue[queue.length] = task;
- }
- var queue = [];
- var flushing = false;
- var requestFlush;
- var index = 0;
- var capacity = 1024;
- function flush() {
- while (index < queue.length) {
- var currentIndex = index;
-
-
- index = index + 1;
- queue[currentIndex].call();
-
-
-
-
-
- if (index > capacity) {
-
-
- for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {
- queue[scan] = queue[scan + index];
- }
- queue.length -= index;
- index = 0;
- }
- }
- queue.length = 0;
- index = 0;
- flushing = false;
- }
- var scope = typeof global !== "undefined" ? global : self;
- var BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;
- if (typeof BrowserMutationObserver === "function") {
- requestFlush = makeRequestCallFromMutationObserver(flush);
- } else {
- requestFlush = makeRequestCallFromTimer(flush);
- }
- rawAsap.requestFlush = requestFlush;
- function makeRequestCallFromMutationObserver(callback) {
- var toggle = 1;
- var observer = new BrowserMutationObserver(callback);
- var node = document.createTextNode("");
- observer.observe(node, {characterData: true});
- return function requestCall() {
- toggle = -toggle;
- node.data = toggle;
- };
- }
- function makeRequestCallFromTimer(callback) {
- return function requestCall() {
-
-
-
-
- var timeoutHandle = setTimeout(handleTimer, 0);
-
-
-
- var intervalHandle = setInterval(handleTimer, 50);
- function handleTimer() {
-
-
- clearTimeout(timeoutHandle);
- clearInterval(intervalHandle);
- callback();
- }
- };
- }
- rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;
|