You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							69 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							69 lines
						
					
					
						
							1.8 KiB
						
					
					
				
								'use strict';
							 | 
						|
								var Mutation = global.MutationObserver || global.WebKitMutationObserver;
							 | 
						|
								
							 | 
						|
								var scheduleDrain;
							 | 
						|
								
							 | 
						|
								{
							 | 
						|
								  if (Mutation) {
							 | 
						|
								    var called = 0;
							 | 
						|
								    var observer = new Mutation(nextTick);
							 | 
						|
								    var element = global.document.createTextNode('');
							 | 
						|
								    observer.observe(element, {
							 | 
						|
								      characterData: true
							 | 
						|
								    });
							 | 
						|
								    scheduleDrain = function () {
							 | 
						|
								      element.data = (called = ++called % 2);
							 | 
						|
								    };
							 | 
						|
								  } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {
							 | 
						|
								    var channel = new global.MessageChannel();
							 | 
						|
								    channel.port1.onmessage = nextTick;
							 | 
						|
								    scheduleDrain = function () {
							 | 
						|
								      channel.port2.postMessage(0);
							 | 
						|
								    };
							 | 
						|
								  } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {
							 | 
						|
								    scheduleDrain = function () {
							 | 
						|
								
							 | 
						|
								      // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
							 | 
						|
								      // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
							 | 
						|
								      var scriptEl = global.document.createElement('script');
							 | 
						|
								      scriptEl.onreadystatechange = function () {
							 | 
						|
								        nextTick();
							 | 
						|
								
							 | 
						|
								        scriptEl.onreadystatechange = null;
							 | 
						|
								        scriptEl.parentNode.removeChild(scriptEl);
							 | 
						|
								        scriptEl = null;
							 | 
						|
								      };
							 | 
						|
								      global.document.documentElement.appendChild(scriptEl);
							 | 
						|
								    };
							 | 
						|
								  } else {
							 | 
						|
								    scheduleDrain = function () {
							 | 
						|
								      setTimeout(nextTick, 0);
							 | 
						|
								    };
							 | 
						|
								  }
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								var draining;
							 | 
						|
								var queue = [];
							 | 
						|
								//named nextTick for less confusing stack traces
							 | 
						|
								function nextTick() {
							 | 
						|
								  draining = true;
							 | 
						|
								  var i, oldQueue;
							 | 
						|
								  var len = queue.length;
							 | 
						|
								  while (len) {
							 | 
						|
								    oldQueue = queue;
							 | 
						|
								    queue = [];
							 | 
						|
								    i = -1;
							 | 
						|
								    while (++i < len) {
							 | 
						|
								      oldQueue[i]();
							 | 
						|
								    }
							 | 
						|
								    len = queue.length;
							 | 
						|
								  }
							 | 
						|
								  draining = false;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								module.exports = immediate;
							 | 
						|
								function immediate(task) {
							 | 
						|
								  if (queue.push(task) === 1 && !draining) {
							 | 
						|
								    scheduleDrain();
							 | 
						|
								  }
							 | 
						|
								}
							 | 
						|
								
							 |