type Deferred<T> = {
promise: Promise<T>;
resolve: (value: T | PromiseLike<T>) => void;
reject: (reason?: unknown) => void;
};
export function deferred<T>(): Deferred<T> {
let resolve!: Deferred<T>['resolve'];
let reject!: Deferred<T>['reject'];
const promise = new Promise<T>((res, rej) => { resolve = res; reject = rej; });
return { promise, resolve, reject };
}
// Wait for a one-shot event
const d = deferred<MessageEvent>();
worker.addEventListener('message', d.resolve, { once: true });
const msg = await d.promise;
Create a free account and build your private vault. Share publicly whenever you want.