From d1978c096fe279d82903a4e5def65442f21b52dc Mon Sep 17 00:00:00 2001 From: Nolan Lawson Date: Wed, 13 Mar 2019 08:54:40 -0700 Subject: [PATCH] fix: improve requestIdleCallback usage --- src/utils/index.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/utils/index.js b/src/utils/index.js index 8276184..6682c62 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -192,18 +192,20 @@ function measureScrollbar() { // Use requestIdleCallback() if available, else fall back to setTimeout(). // Throttle so as not to run too frequently. function throttleIdleTask(func) { - const queue = + const doIdleTask = typeof requestIdleCallback === 'function' ? requestIdleCallback : setTimeout - const clear = - typeof cancelIdleCallback === 'function' ? cancelIdleCallback : clearTimeout - let id + let running = false return function throttled() { - if (id) { - clear(id) + if (running) { + return } - id = queue(func) + running = true + doIdleTask(() => { + running = false + func() + }) } }