Skip to content

Commit b2a9142

Browse files
authored
fix(runtime-core/scheduler): prevent duplicate queue (#1767)
1 parent 86cdf66 commit b2a9142

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

packages/runtime-core/__tests__/scheduler.spec.ts

+12
Original file line numberDiff line numberDiff line change
@@ -353,4 +353,16 @@ describe('scheduler', () => {
353353
await nextTick()
354354
expect(count).toBe(5)
355355
})
356+
357+
test('should prevent duplicate queue', async () => {
358+
let count = 0
359+
const job = () => {
360+
count++
361+
}
362+
job.cb = true
363+
queueJob(job)
364+
queueJob(job)
365+
await nextTick()
366+
expect(count).toBe(1)
367+
})
356368
})

packages/runtime-core/src/scheduler.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export function queueJob(job: SchedulerJob) {
4545
// ensure it doesn't end up in an infinite loop.
4646
if (
4747
!queue.length ||
48-
!queue.includes(job, job.cb ? flushIndex + 1 : flushIndex)
48+
!queue.includes(job, isFlushing && job.cb ? flushIndex + 1 : flushIndex)
4949
) {
5050
queue.push(job)
5151
if ((job.id as number) < 0) hasPendingPreFlushJobs = true

0 commit comments

Comments
 (0)