12 lines
368 B
TypeScript
12 lines
368 B
TypeScript
/** Serialize local saves so each request reads the revision returned by the last. */
|
|
export function createCanvasSaveQueue() {
|
|
let pending: Promise<unknown> = Promise.resolve();
|
|
return {
|
|
enqueue<T>(save: () => Promise<T>): Promise<T> {
|
|
const next = pending.then(save, save);
|
|
pending = next.catch(() => undefined);
|
|
return next;
|
|
},
|
|
};
|
|
}
|