1 | var now = require('../time/now');
|
2 | var timeout = require('./timeout');
|
3 | var append = require('../array/append');
|
4 |
|
5 | /**
|
6 | * Ensure a minimum delay for callbacks
|
7 | */
|
8 | function awaitDelay( callback, delay ){
|
9 | var baseTime = now() + delay;
|
10 | return function() {
|
11 | // ensure all browsers will execute it asynchronously (avoid hard
|
12 | // to catch errors) not using "0" because of old browsers and also
|
13 | // since new browsers increase the value to be at least "4"
|
14 | // http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout
|
15 | var ms = Math.max(baseTime - now(), 4);
|
16 | return timeout.apply(this, append([callback, ms, this], arguments));
|
17 | };
|
18 | }
|
19 |
|
20 | module.exports = awaitDelay;
|
21 |
|
22 |
|