TelegramPWA/src/util/callbacks.ts
Alexander Zinchuk 3afcde3217 Initial commit
2021-04-09 14:11:51 +03:00

31 lines
570 B
TypeScript

export function createCallbackManager() {
const callbacks: AnyToVoidFunction[] = [];
function addCallback(cb: AnyToVoidFunction) {
callbacks.push(cb);
return () => {
removeCallback(cb);
};
}
function removeCallback(cb: AnyToVoidFunction) {
const index = callbacks.indexOf(cb);
if (index !== -1) {
callbacks.splice(index, 1);
}
}
function runCallbacks(...args: any[]) {
callbacks.forEach((callback) => {
callback(...args);
});
}
return {
runCallbacks,
addCallback,
removeCallback,
};
}