12345678910111213141516171819202122232425262728293031 |
- var global = require('../internals/global');
- var apply = require('../internals/function-apply');
- var isCallable = require('../internals/is-callable');
- var userAgent = require('../internals/engine-user-agent');
- var arraySlice = require('../internals/array-slice');
- var validateArgumentsLength = require('../internals/validate-arguments-length');
- var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check
- var Function = global.Function;
- var wrap = function (scheduler) {
- return MSIE ? function (handler, timeout /* , ...arguments */) {
- var boundArgs = validateArgumentsLength(arguments.length, 1) > 2;
- var fn = isCallable(handler) ? handler : Function(handler);
- var args = boundArgs ? arraySlice(arguments, 2) : undefined;
- return scheduler(boundArgs ? function () {
- apply(fn, this, args);
- } : fn, timeout);
- } : scheduler;
- };
- // ie9- setTimeout & setInterval additional parameters fix
- // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers
- module.exports = {
- // `setTimeout` method
- // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout
- setTimeout: wrap(global.setTimeout),
- // `setInterval` method
- // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval
- setInterval: wrap(global.setInterval)
- };
|