19 lines
519 B
JavaScript
19 lines
519 B
JavaScript
export class AsyncCallbackSet {
|
|
add(callback) {
|
|
this.callbacks.push(callback);
|
|
}
|
|
async runAll() {
|
|
if (!this.callbacks.length) {
|
|
return;
|
|
}
|
|
const callbacks = this.callbacks;
|
|
this.callbacks = [];
|
|
await Promise.allSettled(callbacks.map(// NOTE: wrapped in an async function to protect against synchronous exceptions
|
|
async (f)=>f()));
|
|
}
|
|
constructor(){
|
|
this.callbacks = [];
|
|
}
|
|
}
|
|
|
|
//# sourceMappingURL=async-callback-set.js.map
|