docs/modules/throttle.html
modules/_baseCreate.jsmodules/_baseIteratee.jsmodules/_cb.jsmodules/_chainResult.jsmodules/_collectNonEnumProps.jsmodules/_createAssigner.jsmodules/_createEscaper.jsmodules/_createIndexFinder.jsmodules/_createPredicateIndexFinder.jsmodules/_createReduce.jsmodules/_createSizePropertyCheck.jsmodules/_deepGet.jsmodules/_escapeMap.jsmodules/_executeBound.jsmodules/_flatten.jsmodules/_getByteLength.jsmodules/_getLength.jsmodules/_group.jsmodules/_has.jsmodules/_hasObjectTag.jsmodules/_isArrayLike.jsmodules/_isBufferLike.jsmodules/_keyInObj.jsmodules/_methodFingerprint.jsmodules/_optimizeCb.jsmodules/_setup.jsmodules/_shallowProperty.jsmodules/_stringTagBug.jsmodules/_tagTester.jsmodules/_toBufferView.jsmodules/_toPath.jsmodules/_unescapeMap.jsmodules/after.jsmodules/allKeys.jsmodules/before.jsmodules/bind.jsmodules/bindAll.jsmodules/chain.jsmodules/chunk.jsmodules/clone.jsmodules/compact.jsmodules/compose.jsmodules/constant.jsmodules/contains.jsmodules/countBy.jsmodules/create.jsmodules/debounce.jsmodules/defaults.jsmodules/defer.jsmodules/delay.jsmodules/difference.jsmodules/each.jsmodules/escape.jsmodules/every.jsmodules/extend.jsmodules/extendOwn.jsmodules/filter.jsmodules/find.jsmodules/findIndex.jsmodules/findKey.jsmodules/findLastIndex.jsmodules/findWhere.jsmodules/first.jsmodules/flatten.jsmodules/functions.jsmodules/get.jsmodules/groupBy.jsmodules/has.jsmodules/identity.jsmodules/index-all.jsmodules/index-default.jsmodules/index.jsmodules/indexBy.jsmodules/indexOf.jsmodules/initial.jsmodules/intersection.jsmodules/invert.jsmodules/invoke.jsmodules/isArguments.jsmodules/isArray.jsmodules/isArrayBuffer.jsmodules/isBoolean.jsmodules/isDataView.jsmodules/isDate.jsmodules/isElement.jsmodules/isEmpty.jsmodules/isEqual.jsmodules/isError.jsmodules/isFinite.jsmodules/isFunction.jsmodules/isMap.jsmodules/isMatch.jsmodules/isNaN.jsmodules/isNull.jsmodules/isNumber.jsmodules/isObject.jsmodules/isRegExp.jsmodules/isSet.jsmodules/isString.jsmodules/isSymbol.jsmodules/isTypedArray.jsmodules/isUndefined.jsmodules/isWeakMap.jsmodules/isWeakSet.jsmodules/iteratee.jsmodules/keys.jsmodules/last.jsmodules/lastIndexOf.jsmodules/map.jsmodules/mapObject.jsmodules/matcher.jsmodules/max.jsmodules/memoize.jsmodules/min.jsmodules/mixin.jsmodules/negate.jsmodules/noop.jsmodules/now.jsmodules/object.jsmodules/omit.jsmodules/once.jsmodules/pairs.jsmodules/partial.jsmodules/partition.jsmodules/pick.jsmodules/pluck.jsmodules/property.jsmodules/propertyOf.jsmodules/random.jsmodules/range.jsmodules/reduce.jsmodules/reduceRight.jsmodules/reject.jsmodules/rest.jsmodules/restArguments.jsmodules/result.jsmodules/sample.jsmodules/shuffle.jsmodules/size.jsmodules/some.jsmodules/sortBy.jsmodules/sortedIndex.jsmodules/tap.jsmodules/template.jsmodules/templateSettings.jsmodules/throttle.jsmodules/times.jsmodules/toArray.jsmodules/toPath.jsmodules/underscore-array-methods.jsmodules/underscore.jsmodules/unescape.jsmodules/union.jsmodules/uniq.jsmodules/uniqueId.jsmodules/unzip.jsmodules/values.jsmodules/where.jsmodules/without.jsmodules/wrap.jsmodules/zip.js
importnowfrom'./now.js';
Returns a function, that, when invoked, will only be triggered at most once during a given window of time. Normally, the throttled function will run as much as it can, without ever going more than once per wait duration; but if you’d like to disable the execution on the leading edge, pass {leading: false}. To disable execution on the trailing edge, ditto.
exportdefaultfunctionthrottle(func, wait, options) {vartimeout, context, args, result;varprevious =0;if(!options) options = {};varlater =function() {
previous = options.leading===false?0:now();
timeout =null;
result = func.apply(context, args);if(!timeout) context = args =null;
};varthrottled =function() {var_now =now();if(!previous && options.leading===false) previous = _now;varremaining = wait - (_now - previous);
context =this;
args =arguments;if(remaining <=0|| remaining > wait) {if(timeout) {clearTimeout(timeout);
timeout =null;
}
previous = _now;
result = func.apply(context, args);if(!timeout) context = args =null;
}elseif(!timeout && options.trailing!==false) {
timeout =setTimeout(later, remaining);
}returnresult;
};
throttled.cancel=function() {clearTimeout(timeout);
previous =0;
timeout = context = args =null;
};returnthrottled;
}