fix(runtime-core): ensure scheduler queue is always non-null (#2567)
fix https://github.com/vitejs/vite/issues/1021
This commit is contained in:
parent
b5926ff9f0
commit
af9560455d
@ -30,7 +30,7 @@ export type SchedulerCbs = SchedulerCb | SchedulerCb[]
|
||||
let isFlushing = false
|
||||
let isFlushPending = false
|
||||
|
||||
const queue: (SchedulerJob | null)[] = []
|
||||
const queue: SchedulerJob[] = []
|
||||
let flushIndex = 0
|
||||
|
||||
const pendingPreFlushCbs: SchedulerCb[] = []
|
||||
@ -87,7 +87,7 @@ function queueFlush() {
|
||||
export function invalidateJob(job: SchedulerJob) {
|
||||
const i = queue.indexOf(job)
|
||||
if (i > -1) {
|
||||
queue[i] = null
|
||||
queue.splice(i, 1)
|
||||
}
|
||||
}
|
||||
|
||||
@ -205,9 +205,7 @@ function flushJobs(seen?: CountMap) {
|
||||
// priority number)
|
||||
// 2. If a component is unmounted during a parent component's update,
|
||||
// its update can be skipped.
|
||||
// Jobs can never be null before flush starts, since they are only invalidated
|
||||
// during execution of another flushed job.
|
||||
queue.sort((a, b) => getId(a!) - getId(b!))
|
||||
queue.sort((a, b) => getId(a) - getId(b))
|
||||
|
||||
try {
|
||||
for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {
|
||||
|
Loading…
Reference in New Issue
Block a user