Back | Home
الـ Path الحالي: /home/picotech/domains/instantly.picotech.app/public_html/public/uploads/../uploads/../../../../instantly.picotech.app/homes/../../wa.picotech.app/public_html/node_modules/path-exists/../duplexify/./../@protobufjs/../cheerio/../@socket.io/../ee-first/../path-exists/../dotenv/../y18n/../methods/../../node_modules/validator/../negotiator/../base64id/../validator/../axios/lib/helpers
الملفات الموجودة في هذا الـ Path:
.
..
AxiosTransformStream.js
AxiosURLSearchParams.js
HttpStatusCode.js
README.md
ZlibHeaderTransformStream.js
bind.js
buildURL.js
callbackify.js
combineURLs.js
cookies.js
deprecatedMethod.js
formDataToJSON.js
formDataToStream.js
fromDataURI.js
isAbsoluteURL.js
isAxiosError.js
isURLSameOrigin.js
null.js
parseHeaders.js
parseProtocol.js
readBlob.js
speedometer.js
spread.js
throttle.js
toFormData.js
toURLEncodedForm.js
validator.js

مشاهدة ملف: throttle.js

'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;