Projekt

Obecné

Profil

Stáhnout (1.06 KB) Statistiky
| Větev: | Revize:
1
var toInteger = require('./toInteger');
2

    
3
/** Error message constants. */
4
var FUNC_ERROR_TEXT = 'Expected a function';
5

    
6
/**
7
 * Creates a function that invokes `func`, with the `this` binding and arguments
8
 * of the created function, while it's called less than `n` times. Subsequent
9
 * calls to the created function return the result of the last `func` invocation.
10
 *
11
 * @static
12
 * @memberOf _
13
 * @since 3.0.0
14
 * @category Function
15
 * @param {number} n The number of calls at which `func` is no longer invoked.
16
 * @param {Function} func The function to restrict.
17
 * @returns {Function} Returns the new restricted function.
18
 * @example
19
 *
20
 * jQuery(element).on('click', _.before(5, addContactToList));
21
 * // => Allows adding up to 4 contacts to the list.
22
 */
23
function before(n, func) {
24
  var result;
25
  if (typeof func != 'function') {
26
    throw new TypeError(FUNC_ERROR_TEXT);
27
  }
28
  n = toInteger(n);
29
  return function() {
30
    if (--n > 0) {
31
      result = func.apply(this, arguments);
32
    }
33
    if (n <= 1) {
34
      func = undefined;
35
    }
36
    return result;
37
  };
38
}
39

    
40
module.exports = before;
(311-311/634)