mirror of
https://github.com/tenrok/vue-meta.git
synced 2026-06-23 06:50:35 +03:00
refactor: batch updates using requestIdleCallback, use setTimeout as fallback
This commit is contained in:
@@ -1,4 +1,10 @@
|
|||||||
import { rootConfigKey } from '../shared/constants'
|
import { rootConfigKey } from '../shared/constants'
|
||||||
|
import { hasGlobalWindow } from '../utils/window'
|
||||||
|
|
||||||
|
const scheduleRefresh = (hasGlobalWindow && window.requestIdleCallback) || function (cb, { timeout }) {
|
||||||
|
return setTimeout(cb, timeout)
|
||||||
|
}
|
||||||
|
const cancelRefresh = (hasGlobalWindow && window.cancelIdleCallback) || clearTimeout
|
||||||
|
|
||||||
// store an id to keep track of DOM updates
|
// store an id to keep track of DOM updates
|
||||||
let batchId = null
|
let batchId = null
|
||||||
@@ -32,10 +38,10 @@ export function batchUpdate (callback, timeout) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
clearTimeout(batchId)
|
cancelRefresh(batchId)
|
||||||
batchId = setTimeout(() => {
|
batchId = scheduleRefresh(() => {
|
||||||
callback()
|
callback()
|
||||||
}, timeout)
|
}, { timeout })
|
||||||
|
|
||||||
return batchId
|
return batchId
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user