8000 Ensure `_.debounce` queues a trailing call after `maxWait`. [closes #… · lodash/lodash@e60e97c · GitHub
[go: up one dir, main page]

Skip to content

Commit e60e97c

Browse files
committed
Ensure _.debounce queues a trailing call after maxWait. [closes #2229]
1 parent e619f8c commit e60e97c

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

lodash.js

+3
Original file line numberDiff line numberDiff line change
@@ -9436,6 +9436,9 @@
94369436
timerId = setTimeout(timerExpired, wait);
94379437
return invokeFunc(lastCallTime);
94389438
}
9439+
if (timerId === undefined) {
9440+
timerId = setTimeout(timerExpired, wait);
9441+
}
94399442
return result;
94409443
}
94419444
debounced.cancel = cancel;

test/test.js

+23
Original file line numberDiff line numberDiff line change
@@ -4248,6 +4248,29 @@
42484248
}, 1);
42494249
});
42504250

4251+
QUnit.test('should queue a trailing call for subsequent debounced calls after `maxWait`', function(assert) {
4252+
assert.expect(1);
4253+
4254+
var done = assert.async();
4255+
4256+
var callCount = 0;
4257+
4258+
var debounced = _.debounce(function() {
4259+
++callCount;
4260+
}, 64, { 'maxWait': 64 });
4261+
4262+
debounced();
4263+
4264+
lodashStable.times(20, function(index) {
4265+
setTimeout(debounced, 54 + index);
4266+
});
4267+
4268+
setTimeout(function() {
4269+
assert.strictEqual(callCount, 2);
4270+
done();
4271+
}, 160);
4272+
});
4273+
42514274
QUnit.test('should cancel `maxDelayed` when `delayed` is invoked', function(assert) {
42524275
assert.expect(2);
42534276

0 commit comments

Comments
 (0)
0