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.
		
		
		
		
			
				
					64 lines
				
				2.0 KiB
			
		
		
			
		
	
	
					64 lines
				
				2.0 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								var scope = (typeof global !== "undefined" && global) ||
							 | 
						||
| 
								 | 
							
								            (typeof self !== "undefined" && self) ||
							 | 
						||
| 
								 | 
							
								            window;
							 | 
						||
| 
								 | 
							
								var apply = Function.prototype.apply;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// DOM APIs, for completeness
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exports.setTimeout = function() {
							 | 
						||
| 
								 | 
							
								  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								exports.setInterval = function() {
							 | 
						||
| 
								 | 
							
								  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								exports.clearTimeout =
							 | 
						||
| 
								 | 
							
								exports.clearInterval = function(timeout) {
							 | 
						||
| 
								 | 
							
								  if (timeout) {
							 | 
						||
| 
								 | 
							
								    timeout.close();
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function Timeout(id, clearFn) {
							 | 
						||
| 
								 | 
							
								  this._id = id;
							 | 
						||
| 
								 | 
							
								  this._clearFn = clearFn;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								Timeout.prototype.unref = Timeout.prototype.ref = function() {};
							 | 
						||
| 
								 | 
							
								Timeout.prototype.close = function() {
							 | 
						||
| 
								 | 
							
								  this._clearFn.call(scope, this._id);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Does not start the time, just sets up the members needed.
							 | 
						||
| 
								 | 
							
								exports.enroll = function(item, msecs) {
							 | 
						||
| 
								 | 
							
								  clearTimeout(item._idleTimeoutId);
							 | 
						||
| 
								 | 
							
								  item._idleTimeout = msecs;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exports.unenroll = function(item) {
							 | 
						||
| 
								 | 
							
								  clearTimeout(item._idleTimeoutId);
							 | 
						||
| 
								 | 
							
								  item._idleTimeout = -1;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exports._unrefActive = exports.active = function(item) {
							 | 
						||
| 
								 | 
							
								  clearTimeout(item._idleTimeoutId);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var msecs = item._idleTimeout;
							 | 
						||
| 
								 | 
							
								  if (msecs >= 0) {
							 | 
						||
| 
								 | 
							
								    item._idleTimeoutId = setTimeout(function onTimeout() {
							 | 
						||
| 
								 | 
							
								      if (item._onTimeout)
							 | 
						||
| 
								 | 
							
								        item._onTimeout();
							 | 
						||
| 
								 | 
							
								    }, msecs);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// setimmediate attaches itself to the global object
							 | 
						||
| 
								 | 
							
								require("setimmediate");
							 | 
						||
| 
								 | 
							
								// On some exotic environments, it's not clear which object `setimmediate` was
							 | 
						||
| 
								 | 
							
								// able to install onto.  Search each possibility in the same order as the
							 | 
						||
| 
								 | 
							
								// `setimmediate` library.
							 | 
						||
| 
								 | 
							
								exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) ||
							 | 
						||
| 
								 | 
							
								                       (typeof global !== "undefined" && global.setImmediate) ||
							 | 
						||
| 
								 | 
							
								                       (this && this.setImmediate);
							 | 
						||
| 
								 | 
							
								exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) ||
							 | 
						||
| 
								 | 
							
								                         (typeof global !== "undefined" && global.clearImmediate) ||
							 | 
						||
| 
								 | 
							
								                         (this && this.clearImmediate);
							 |