Consolidate delay modules.

This commit is contained in:
John-David Dalton
2017-01-10 21:25:56 -08:00
parent 70379910f7
commit 6c54ae2ae5
3 changed files with 8 additions and 23 deletions

View File

@@ -1,18 +0,0 @@
/**
* The base implementation of `delay` and `defer` which accepts `args`
* to provide to `func`.
*
* @private
* @param {Function} func The function to delay.
* @param {number} wait The number of milliseconds to delay invocation.
* @param {Array} args The arguments to provide to `func`.
* @returns {number|Object} Returns the timer id or timeout object.
*/
function baseDelay(func, wait, args) {
if (typeof func != 'function') {
throw new TypeError('Expected a function');
}
return setTimeout(() => func(...args), wait);
}
export default baseDelay;

View File

@@ -1,5 +1,3 @@
import baseDelay from './.internal/baseDelay.js';
/**
* Defers invoking the `func` until the current call stack has cleared. Any
* additional arguments are provided to `func` when it's invoked.
@@ -15,7 +13,10 @@ import baseDelay from './.internal/baseDelay.js';
* // => Logs 'deferred' after one millisecond.
*/
function defer(func, ...args) {
return baseDelay(func, 1, args);
if (typeof func != 'function') {
throw new TypeError('Expected a function');
}
return setTimeout(() => func(...args), 1);
}
export default defer;

View File

@@ -1,4 +1,3 @@
import baseDelay from './.internal/baseDelay.js';
import toNumber from './toNumber.js';
/**
@@ -17,7 +16,10 @@ import toNumber from './toNumber.js';
* // => Logs 'later' after one second.
*/
function delay(func, wait, ...args) {
return baseDelay(func, toNumber(wait) || 0, args);
if (typeof func != 'function') {
throw new TypeError('Expected a function');
}
return setTimeout(() => func(...args), toNumber(wait) || 0);
}
export default delay;