| | |
| | | var $ = require('../internals/export'); |
| | | var global = require('../internals/global'); |
| | | var isCallable = require('../internals/is-callable'); |
| | | var userAgent = require('../internals/engine-user-agent'); |
| | | |
| | | var slice = [].slice; |
| | | var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check |
| | | |
| | | var wrap = function (scheduler) { |
| | | return function (handler, timeout /* , ...arguments */) { |
| | | var boundArgs = arguments.length > 2; |
| | | var args = boundArgs ? slice.call(arguments, 2) : undefined; |
| | | return scheduler(boundArgs ? function () { |
| | | // eslint-disable-next-line no-new-func -- spec requirement |
| | | (isCallable(handler) ? handler : Function(handler)).apply(this, args); |
| | | } : handler, 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) |
| | | }); |
| | | // TODO: Remove this module from `core-js@4` since it's split to modules listed below |
| | | require('../modules/web.set-interval'); |
| | | require('../modules/web.set-timeout'); |