Skip to content

Commit

Permalink
fix(runtime-core): ensure scheduler queue is always non-null (#2567)
Browse files Browse the repository at this point in the history
  • Loading branch information
underfin authored Nov 9, 2020
1 parent b5926ff commit af95604
Showing 1 changed file with 3 additions and 5 deletions.
8 changes: 3 additions & 5 deletions packages/runtime-core/src/scheduler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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[] = []
Expand Down Expand Up @@ -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)
}
}

Expand Down Expand Up @@ -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++) {
Expand Down

0 comments on commit af95604

Please sign in to comment.