first
This commit is contained in:
117
node_modules/core-js/internals/task.js
generated
vendored
Normal file
117
node_modules/core-js/internals/task.js
generated
vendored
Normal file
@ -0,0 +1,117 @@
|
||||
'use strict';
|
||||
var global = require('../internals/global');
|
||||
var apply = require('../internals/function-apply');
|
||||
var bind = require('../internals/function-bind-context');
|
||||
var isCallable = require('../internals/is-callable');
|
||||
var hasOwn = require('../internals/has-own-property');
|
||||
var fails = require('../internals/fails');
|
||||
var html = require('../internals/html');
|
||||
var arraySlice = require('../internals/array-slice');
|
||||
var createElement = require('../internals/document-create-element');
|
||||
var validateArgumentsLength = require('../internals/validate-arguments-length');
|
||||
var IS_IOS = require('../internals/engine-is-ios');
|
||||
var IS_NODE = require('../internals/engine-is-node');
|
||||
|
||||
var set = global.setImmediate;
|
||||
var clear = global.clearImmediate;
|
||||
var process = global.process;
|
||||
var Dispatch = global.Dispatch;
|
||||
var Function = global.Function;
|
||||
var MessageChannel = global.MessageChannel;
|
||||
var String = global.String;
|
||||
var counter = 0;
|
||||
var queue = {};
|
||||
var ONREADYSTATECHANGE = 'onreadystatechange';
|
||||
var $location, defer, channel, port;
|
||||
|
||||
fails(function () {
|
||||
// Deno throws a ReferenceError on `location` access without `--location` flag
|
||||
$location = global.location;
|
||||
});
|
||||
|
||||
var run = function (id) {
|
||||
if (hasOwn(queue, id)) {
|
||||
var fn = queue[id];
|
||||
delete queue[id];
|
||||
fn();
|
||||
}
|
||||
};
|
||||
|
||||
var runner = function (id) {
|
||||
return function () {
|
||||
run(id);
|
||||
};
|
||||
};
|
||||
|
||||
var eventListener = function (event) {
|
||||
run(event.data);
|
||||
};
|
||||
|
||||
var globalPostMessageDefer = function (id) {
|
||||
// old engines have not location.origin
|
||||
global.postMessage(String(id), $location.protocol + '//' + $location.host);
|
||||
};
|
||||
|
||||
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
|
||||
if (!set || !clear) {
|
||||
set = function setImmediate(handler) {
|
||||
validateArgumentsLength(arguments.length, 1);
|
||||
var fn = isCallable(handler) ? handler : Function(handler);
|
||||
var args = arraySlice(arguments, 1);
|
||||
queue[++counter] = function () {
|
||||
apply(fn, undefined, args);
|
||||
};
|
||||
defer(counter);
|
||||
return counter;
|
||||
};
|
||||
clear = function clearImmediate(id) {
|
||||
delete queue[id];
|
||||
};
|
||||
// Node.js 0.8-
|
||||
if (IS_NODE) {
|
||||
defer = function (id) {
|
||||
process.nextTick(runner(id));
|
||||
};
|
||||
// Sphere (JS game engine) Dispatch API
|
||||
} else if (Dispatch && Dispatch.now) {
|
||||
defer = function (id) {
|
||||
Dispatch.now(runner(id));
|
||||
};
|
||||
// Browsers with MessageChannel, includes WebWorkers
|
||||
// except iOS - https://github.com/zloirock/core-js/issues/624
|
||||
} else if (MessageChannel && !IS_IOS) {
|
||||
channel = new MessageChannel();
|
||||
port = channel.port2;
|
||||
channel.port1.onmessage = eventListener;
|
||||
defer = bind(port.postMessage, port);
|
||||
// Browsers with postMessage, skip WebWorkers
|
||||
// IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
|
||||
} else if (
|
||||
global.addEventListener &&
|
||||
isCallable(global.postMessage) &&
|
||||
!global.importScripts &&
|
||||
$location && $location.protocol !== 'file:' &&
|
||||
!fails(globalPostMessageDefer)
|
||||
) {
|
||||
defer = globalPostMessageDefer;
|
||||
global.addEventListener('message', eventListener, false);
|
||||
// IE8-
|
||||
} else if (ONREADYSTATECHANGE in createElement('script')) {
|
||||
defer = function (id) {
|
||||
html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {
|
||||
html.removeChild(this);
|
||||
run(id);
|
||||
};
|
||||
};
|
||||
// Rest old browsers
|
||||
} else {
|
||||
defer = function (id) {
|
||||
setTimeout(runner(id), 0);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
set: set,
|
||||
clear: clear
|
||||
};
|
Reference in New Issue
Block a user