1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
class ScrollQueue { private resolve: (() => void) | null = null; private promise: Promise<any> | null = null; add() { this.promise = new Promise((resolve) => { this.resolve = resolve; }); } flush() { this.resolve && this.resolve(); this.resolve = null; this.promise = null; } async wait() { await this.promise; } } export const scrollWaiter = new ScrollQueue();