qrcode-reader-vue3
Version:
A set of Vue.js components for detecting and decoding QR codes.
36 lines (30 loc) • 797 B
text/typescript
export const indempotent = <T extends (...args: unknown[]) => unknown>(
action: T
): T => {
let called = false;
let result: ReturnType<T> | undefined = undefined;
return ((...args: Parameters<T>) => {
if (called) {
return result;
} else {
result = action(...args) as ReturnType<T>;
called = true;
return result;
}
}) as T;
};
export const eventOn = (
target: EventTarget,
eventName: string
): Promise<Event> =>
new Promise((resolve) => {
const handler = (event: Event): void => {
target.removeEventListener(eventName, handler);
resolve(event);
};
target.addEventListener(eventName, handler);
});
export const timeout = (ms: number): Promise<void> =>
new Promise((resolve) => {
setTimeout(resolve, ms);
});