]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(runtime-core/scheduler): invalidate job (#717)
authorYang Mingshan <y.mingshan3@gmail.com>
Tue, 11 Feb 2020 12:30:25 +0000 (20:30 +0800)
committerGitHub <noreply@github.com>
Tue, 11 Feb 2020 12:30:25 +0000 (07:30 -0500)
packages/runtime-core/__tests__/scheduler.spec.ts
packages/runtime-core/src/scheduler.ts

index 65535d679a0db3c2a424a73ac68bb86372c31db9..cf035c97a0d9dd7f23783ebbe0623107edb16124 100644 (file)
@@ -246,12 +246,20 @@ describe('scheduler', () => {
     const job2 = () => {
       calls.push('job2')
     }
-    // queue both jobs
+    const job3 = () => {
+      calls.push('job3')
+    }
+    const job4 = () => {
+      calls.push('job4')
+    }
+    // queue all jobs
     queueJob(job1)
     queueJob(job2)
+    queueJob(job3)
+    queuePostFlushCb(job4)
     expect(calls).toEqual([])
     await nextTick()
     // job2 should be called only once
-    expect(calls).toEqual(['job1', 'job2'])
+    expect(calls).toEqual(['job1', 'job2', 'job3', 'job4'])
   })
 })
index a13a01280e0cf96927683f4b0bcc74c6e673f2bf..c730730f416550a2578012231a494d25ff514144 100644 (file)
@@ -70,7 +70,7 @@ function flushJobs(seen?: CountMap) {
   if (__DEV__) {
     seen = seen || new Map()
   }
-  while ((job = queue.shift())) {
+  while ((job = queue.shift()) !== undefined) {
     if (job === null) {
       continue
     }