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.
32 lines
1.3 KiB
32 lines
1.3 KiB
var $ = require('../internals/export'); |
|
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 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); |
|
}; |
|
}; |
|
|
|
// ie9- setTimeout & setInterval additional parameters fix |
|
// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers |
|
$({ global: true, bind: true, forced: MSIE }, { |
|
// `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) |
|
});
|
|
|