diff options
Diffstat (limited to 'deps/npm/node_modules/cli-table2/node_modules/lodash/function/after.js')
-rw-r--r-- | deps/npm/node_modules/cli-table2/node_modules/lodash/function/after.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/deps/npm/node_modules/cli-table2/node_modules/lodash/function/after.js b/deps/npm/node_modules/cli-table2/node_modules/lodash/function/after.js new file mode 100644 index 0000000000..96a51fdbcf --- /dev/null +++ b/deps/npm/node_modules/cli-table2/node_modules/lodash/function/after.js @@ -0,0 +1,48 @@ +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeIsFinite = global.isFinite; + +/** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it's called `n` or more times. + * + * @static + * @memberOf _ + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => logs 'done saving!' after the two async saves have completed + */ +function after(n, func) { + if (typeof func != 'function') { + if (typeof n == 'function') { + var temp = n; + n = func; + func = temp; + } else { + throw new TypeError(FUNC_ERROR_TEXT); + } + } + n = nativeIsFinite(n = +n) ? n : 0; + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; +} + +module.exports = after; |