UNPKG

812 BJavaScriptView Raw
1var now = require('../time/now');
2var timeout = require('./timeout');
3var 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