Ensure _.debounce queues a trailing call after maxWait. [closes #2229]

This commit is contained in:
John-David Dalton
2016-04-10 19:53:34 -07:00
parent e619f8ca83
commit e60e97c03f
2 changed files with 26 additions and 0 deletions

View File

@@ -9436,6 +9436,9 @@
timerId = setTimeout(timerExpired, wait);
return invokeFunc(lastCallTime);
}
if (timerId === undefined) {
timerId = setTimeout(timerExpired, wait);
}
return result;
}
debounced.cancel = cancel;

View File

@@ -4248,6 +4248,29 @@
}, 1);
});
QUnit.test('should queue a trailing call for subsequent debounced calls after `maxWait`', function(assert) {
assert.expect(1);
var done = assert.async();
var callCount = 0;
var debounced = _.debounce(function() {
++callCount;
}, 64, { 'maxWait': 64 });
debounced();
lodashStable.times(20, function(index) {
setTimeout(debounced, 54 + index);
});
setTimeout(function() {
assert.strictEqual(callCount, 2);
done();
}, 160);
});
QUnit.test('should cancel `maxDelayed` when `delayed` is invoked', function(assert) {
assert.expect(2);