00001
00002 var HOT_COUNT = 800,
00003 HOT_SPAN = 16;
00004
00005
00006 var nativeNow = Date.now;
00007
00017 function shortOut(func) {
00018 var count = 0,
00019 lastCalled = 0;
00020
00021 return function() {
00022 var stamp = nativeNow(),
00023 remaining = HOT_SPAN - (stamp - lastCalled);
00024
00025 lastCalled = stamp;
00026 if (remaining > 0) {
00027 if (++count >= HOT_COUNT) {
00028 return arguments[0];
00029 }
00030 } else {
00031 count = 0;
00032 }
00033 return func.apply(undefined, arguments);
00034 };
00035 }
00036
00037 module.exports = shortOut;