mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
[FIX] utils: fix calls to batched callback from within the callback
Previously, calling the batched function from within the callback being batched would fail as it would be treated as part of the same batch. This commit fixes that by scheduling the reset of the "called" flag before calling the callback. This means that all microtasks that were already in the microtask queue when a batch is about to run are treated as part of the batch, and all microtasks that will be added by the callback are not.
This commit is contained in:
committed by
Géry Debongnie
parent
7611ea6033
commit
d80fad760c
@@ -50,4 +50,24 @@ describe("batched", () => {
|
||||
await nextMicroTick();
|
||||
expect(n).toBe(1);
|
||||
});
|
||||
|
||||
test("calling batched function from within the callback is not treated as part of the original batch", async () => {
|
||||
let n = 0;
|
||||
let fn = batched(() => {
|
||||
n++;
|
||||
if (n === 1) {
|
||||
fn();
|
||||
}
|
||||
});
|
||||
|
||||
expect(n).toBe(0);
|
||||
fn();
|
||||
expect(n).toBe(0);
|
||||
await nextMicroTick(); // First batch
|
||||
expect(n).toBe(1);
|
||||
await nextMicroTick(); // Second batch initiated from within the callback
|
||||
expect(n).toBe(2);
|
||||
await nextMicroTick();
|
||||
expect(n).toBe(2);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user