foop
Version:
interfaces that describe their intentions.
39 lines (36 loc) • 3.05 kB
JavaScript
var curry = require('../fp/curry')
/**
* Delays a function for the given number of milliseconds, and then calls
* it with the arguments supplied.
*
* @since 5.0.0-beta.5
*
* @param {Function} func The function to delay.
* @param {number} wait The number of milliseconds to delay invocation.
* @param {...*} [args] The arguments to invoke `func` with.
* @return {number} Returns the timer id.
*
* @curried 2
* @func
* @fork 0.1.0
* @category Function
*
* {@link https://github.com/jashkenas/underscore/blob/master/underscore.js#L818 underscore-delay}
* {@link https://github.com/lodash/lodash/blob/master/delay.js lodash-delay}
* @see {@link lodash-delay}
* @see {@link underscore-delay}
*
* @example
*
* delay(text => console.log(text), 1000, 'later')
* //=> Logs 'later' after one second.
*
*/
function delay(func, wait, ...args) {
// return setTimeout(func, +wait || 0, ...args)
return setTimeout(function() {
return func.apply(this, args)
}, wait)
}
module.exports = curry(2, delay)
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsYXkuanMiLCJzb3VyY2VzIjpbImRlbGF5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGN1cnJ5ID0gcmVxdWlyZSgnLi4vZnAvY3VycnknKVxuXG4vKipcbiAqIERlbGF5cyBhIGZ1bmN0aW9uIGZvciB0aGUgZ2l2ZW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgYW5kIHRoZW4gY2FsbHNcbiAqIGl0IHdpdGggdGhlIGFyZ3VtZW50cyBzdXBwbGllZC5cbiAqXG4gKiBAc2luY2UgNS4wLjAtYmV0YS41XG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVsYXkuXG4gKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVyIGlkLlxuICpcbiAqIEBjdXJyaWVkIDJcbiAqIEBmdW5jXG4gKiBAZm9yayAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKlxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXNoa2VuYXMvdW5kZXJzY29yZS9ibG9iL21hc3Rlci91bmRlcnNjb3JlLmpzI0w4MTggdW5kZXJzY29yZS1kZWxheX1cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iL21hc3Rlci9kZWxheS5qcyBsb2Rhc2gtZGVsYXl9XG4gKiBAc2VlIHtAbGluayBsb2Rhc2gtZGVsYXl9XG4gKiBAc2VlIHtAbGluayB1bmRlcnNjb3JlLWRlbGF5fVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICBkZWxheSh0ZXh0ID0+IGNvbnNvbGUubG9nKHRleHQpLCAxMDAwLCAnbGF0ZXInKVxuICogICAvLz0+IExvZ3MgJ2xhdGVyJyBhZnRlciBvbmUgc2Vjb25kLlxuICpcbiAqL1xuZnVuY3Rpb24gZGVsYXkoZnVuYywgd2FpdCwgLi4uYXJncykge1xuICAvLyByZXR1cm4gc2V0VGltZW91dChmdW5jLCArd2FpdCB8fCAwLCAuLi5hcmdzKVxuICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKVxuICB9LCB3YWl0KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGN1cnJ5KDIsIGRlbGF5KVxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZCcEMsU0FBUyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRTs7RUFFbEMsT0FBTyxVQUFVLENBQUMsV0FBVztJQUMzQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztHQUM5QixFQUFFLElBQUksQ0FBQztDQUNUOztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7In0=