diff --git a/src/queue.js b/src/queue.js index a261761..c2e6d44 100644 --- a/src/queue.js +++ b/src/queue.js @@ -15,10 +15,11 @@ function queue() { }, flush() { - if (!completed) { + if (completed === null) { completed = new Promise(function (resolve) { window.setTimeout(function () { flush(); + completed = null; resolve(); }, 0); }); diff --git a/test/queue.test.js b/test/queue.test.js index 5be28f2..3531b52 100644 --- a/test/queue.test.js +++ b/test/queue.test.js @@ -33,3 +33,18 @@ test('flush will run fns added after initial call', () => { expect(fn2.mock.calls.length).toEqual(1); }); }); + +test('flush will run again after delayed completion', (done) => { + let q = queue(); + let fn = jest.fn(); + let fn2 = jest.fn(); + q.add(fn); + + q.flush().then(() => { + q.add(fn2); + q.flush().then(() => { + expect(fn2.mock.calls.length).toEqual(1); + done(); + }); + }); +});