-
Notifications
You must be signed in to change notification settings - Fork 15
/
set-timeout-override.js
42 lines (36 loc) · 972 Bytes
/
set-timeout-override.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { run } from '@ember/runloop';
import globalScope from './global-scope';
import isFastboot from './is-fastboot';
import raf from './raf';
import nativeSetTimeout from './set-timeout';
import nativeClearTimeout from './clear-timeout';
/**!
* Modifies `window.setTimeout` to use `requestAnimationFrame`
*/
function frameTimeout(method, wait) {
if (!wait) {
return raf.addToFrame.call(null, method);
}
return nativeSetTimeout.call(null, method, wait);
}
function clearTimeout(id) {
raf.clearFrame(id);
nativeClearTimeout(id);
}
function installOverride() {
if (!isFastboot()) {
if (run.backburner._platform) {
run.backburner._platform.setTimeout = frameTimeout;
run.backburner._platform.clearTimeout = clearTimeout;
} else {
globalScope.setTimeout = frameTimeout;
globalScope.clearTimeout = clearTimeout;
}
}
}
export {
frameTimeout,
clearTimeout,
installOverride
};
export default installOverride;