@web-atoms/core
Version:
54 lines (53 loc) • 1.64 kB
JavaScript
System.register(["tslib", "../di/DITransient", "./TransientDisposable"], function (_export, _context) {
"use strict";
var __decorate, DITransient, TransientDisposable, SingleInvoker;
return {
setters: [function (_tslib) {
__decorate = _tslib.__decorate;
}, function (_diDITransient) {
DITransient = _diDITransient.default;
}, function (_TransientDisposable) {
TransientDisposable = _TransientDisposable.default;
}],
execute: function () {
SingleInvoker = class SingleInvoker extends TransientDisposable {
constructor() {
super(...arguments);
this.keys = new Map();
}
dispose() {
for (const [key, index] of this.keys.entries()) {
clearTimeout(index);
}
this.keys.clear();
}
invoke(key, fx, delay = 100) {
const keys = this.keys;
const e = keys.get(key);
if (e) {
clearTimeout(e);
}
keys.set(key, setTimeout(() => {
keys.delete(key);
fx();
}, delay));
}
queue(fx, delay = 1, key) {
key !== null && key !== void 0 ? key : key = fx.toString();
const keys = this.keys;
const e = keys.get(key);
if (e) {
clearTimeout(e);
}
keys.set(key, setTimeout(() => {
keys.delete(key);
fx();
}, delay));
}
};
SingleInvoker = __decorate([DITransient()], SingleInvoker);
_export("default", SingleInvoker);
}
};
});
//# sourceMappingURL=SingleInvoker.js.map