Debounce localstorage save (#328)

I profiled dragging and it looks like it takes ~3ms to save to localStorage a smallish scene and we're doing it twice per mousemove. Let's debounce so we don't pay that cost on every mouse move.

Stole the implementation from #220 which got reverted.
This commit is contained in:
Christopher Chedeau 2020-01-11 20:15:41 -08:00 committed by GitHub
parent c745fd4e5e
commit 3db7d69849
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 2 deletions

View file

@ -51,3 +51,14 @@ export function measureText(text: string, font: string) {
return { width, height, baseline };
}
export function debounce<T extends any[]>(
fn: (...args: T) => void,
timeout: number
) {
let handle = 0;
return (...args: T) => {
clearTimeout(handle);
handle = window.setTimeout(() => fn(...args), timeout);
};
}