Files
enviPy-bayer/static/js/ketcher2/node_modules/timers-ext/throttle.js
2025-06-23 20:13:54 +02:00

34 lines
727 B
JavaScript

'use strict';
var callable = require('es5-ext/object/valid-callable')
, validTimeout = require('./valid-timeout')
, apply = Function.prototype.apply;
module.exports = function (fn, timeout) {
var isScheduled = false, context, args, run;
callable(fn);
timeout = validTimeout(timeout);
run = function () {
var currentContext = context, currentArgs = args;
if (!args) {
isScheduled = false;
return;
}
context = null;
args = null;
setTimeout(run, timeout);
apply.call(fn, currentContext, currentArgs);
};
return function () {
if (isScheduled) {
context = this;
args = arguments;
return;
}
isScheduled = true;
setTimeout(run, timeout);
apply.call(fn, this, arguments);
};
};