Skip to content

Commit 523389b

Browse files
committed
batcher: only run job immediately when internal queue has been depleted
1 parent 6755fd9 commit 523389b

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/batcher.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ var userQueue = []
1212
var has = {}
1313
var waiting = false
1414
var flushing = false
15+
var internalQueueDepleted = false
1516

1617
/**
1718
* Reset the batcher's state.
@@ -21,8 +22,7 @@ function reset () {
2122
queue = []
2223
userQueue = []
2324
has = {}
24-
waiting = false
25-
flushing = false
25+
waiting = flushing = internalQueueDepleted = false
2626
}
2727

2828
/**
@@ -32,6 +32,7 @@ function reset () {
3232
function flush () {
3333
flushing = true
3434
run(queue)
35+
internalQueueDepleted = true
3536
run(userQueue)
3637
reset()
3738
}
@@ -81,7 +82,7 @@ exports.push = function (job) {
8182
// directive update during the flushing; at that time
8283
// the directive queue would already have been run, so
8384
// we call that update immediately as it is pushed.
84-
if (flushing && !job.user) {
85+
if (flushing && !job.user && internalQueueDepleted) {
8586
job.run()
8687
return
8788
}

0 commit comments

Comments
 (0)