web-atoms-core
Version:
30 lines (24 loc) • 813 B
text/typescript
import DITransient from "../di/DITransient";
import TransientDisposable from "./TransientDisposable";
import { IDisposable } from "./types";
()
export default class SingleInvoker extends TransientDisposable {
private keys: {[key: string]: any} = {};
public dispose() {
for (const key in this.keys) {
if (this.keys.hasOwnProperty(key)) {
const element = this.keys[key];
clearTimeout(element);
}
}
}
// tslint:disable-next-line: ban-types
public invoke(key: string, fx: Function, delay: number = 100): void {
const keys = this.keys;
const e = keys[key];
if (e) {
clearTimeout(e);
}
keys[key] = setTimeout(fx, delay);
}
}