重置_.after counter

时间:2015-06-24 08:28:05

标签: javascript underscore.js

我在互联网上查看,但是在执行内部代码后,我无法找到重置_.after计数器的方法。在此示例中,我的预期功能意味着只有每按一次按钮就会显示警告框:

var cb;

cb = _.after(4, function() {
    alert(':)');
});

$('button').on('click', cb);

http://jsfiddle.net/danharper/JkcuD/

1 个答案:

答案 0 :(得分:2)

您无法重置甚至看到计数器,因为计数器是私人的:

来自:http://underscorejs.org/docs/underscore.html#section-87

 _.after = function(times, func) {
    return function() {
      if (--times < 1) {
        return func.apply(this, arguments);
      }
    };
  };

说,你可以看到那里的代码不多,所以将其调整为每次运行都很容易:

 _.onceEvery= function(times, func) {
    var orig = times;
    return function() {
      if (--times < 1) {
        times=orig;
        return func.apply(this, arguments);
      }
    };
  };

示例:http://jsfiddle.net/JkcuD/78/