Slightly debounce progress bar updates

This reduces the amount of progress events fired, which can improve performance by not doing unnecessary DOM updates (= styling, compositing, painting...)
This commit is contained in:
Thomas Weber committed 2020-12-13 19:06:40 -06:00
1 parent 5409057083
commit cdc1cc5db0
1 file changed
+14 -1
+14 -1
View File
@@ -18,6 +18,19 @@ export const setProgressHandler = newHandler => {
progressHandler(state, currentProgress, complete, total);
};
let progressHandlerTimeout = null;
const fireProgressHandler = () => {
progressHandler(state, currentProgress, complete, total);
progressHandlerTimeout = null;
};
const queueProgressHandlerUpdate = () => {
if (progressHandlerTimeout !== null) {
cancelAnimationFrame(progressHandlerTimeout);
}
progressHandlerTimeout = requestAnimationFrame(fireProgressHandler);
};
const setProgress = progress => {
if (progress < 0) {
progress = 0;
@@ -26,7 +39,7 @@ const setProgress = progress => {
progress = 1;
}
currentProgress = progress;
progressHandler(state, progress, complete, total);
queueProgressHandlerUpdate();
};
const setState = newState => {