UNPKG

@aws/cloudfront-hosting-toolkit

Version:

CloudFront Hosting Toolkit offers the convenience of a managed frontend hosting service while retaining full control over the hosting and deployment infrastructure to make it your own.

34 lines (31 loc) 702 B
'use strict'; /** * Throttle decorator * @param {Function} fn * @param {Number} freq * @return {Function} */ function throttle(fn, freq) { let timestamp = 0; const threshold = 1000 / freq; let timer = null; return function throttled(force, args) { const now = Date.now(); if (force || now - timestamp > threshold) { if (timer) { clearTimeout(timer); timer = null; } timestamp = now; return fn.apply(null, args); } if (!timer) { timer = setTimeout(() => { timer = null; timestamp = Date.now(); return fn.apply(null, args); }, threshold - (now - timestamp)); } }; } export default throttle;