Quellcode durchsuchen

fix(runtime-core/scheduler): invalidate job (#717)

Yang Mingshan vor 6 Jahren
Ursprung
Commit
fe9da2d0e4

+ 10 - 2
packages/runtime-core/__tests__/scheduler.spec.ts

@@ -246,12 +246,20 @@ describe('scheduler', () => {
     const job2 = () => {
     const job2 = () => {
       calls.push('job2')
       calls.push('job2')
     }
     }
-    // queue both jobs
+    const job3 = () => {
+      calls.push('job3')
+    }
+    const job4 = () => {
+      calls.push('job4')
+    }
+    // queue all jobs
     queueJob(job1)
     queueJob(job1)
     queueJob(job2)
     queueJob(job2)
+    queueJob(job3)
+    queuePostFlushCb(job4)
     expect(calls).toEqual([])
     expect(calls).toEqual([])
     await nextTick()
     await nextTick()
     // job2 should be called only once
     // job2 should be called only once
-    expect(calls).toEqual(['job1', 'job2'])
+    expect(calls).toEqual(['job1', 'job2', 'job3', 'job4'])
   })
   })
 })
 })

+ 1 - 1
packages/runtime-core/src/scheduler.ts

@@ -70,7 +70,7 @@ function flushJobs(seen?: CountMap) {
   if (__DEV__) {
   if (__DEV__) {
     seen = seen || new Map()
     seen = seen || new Map()
   }
   }
-  while ((job = queue.shift())) {
+  while ((job = queue.shift()) !== undefined) {
     if (job === null) {
     if (job === null) {
       continue
       continue
     }
     }