Skip to content

Commit 7d83467

Browse files
committed
refactor(async-utils): simplify fake timer advancement logic
1 parent 04d6a18 commit 7d83467

File tree

2 files changed

+7
-11
lines changed

2 files changed

+7
-11
lines changed

src/helpers/createTimeoutController.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@ function createTimeoutController(timeout: number | false, options: { allowFakeTi
1717
timeoutController.onTimeout(resolve)
1818
if (timeout) {
1919
timeoutId = setTimeout(() => {
20+
finished = true
2021
timeoutController.timedOut = true
2122
timeoutCallbacks.forEach((callback) => callback())
2223
resolve()
2324
}, timeout)
2425
}
2526

2627
if (fakeTimersAreEnabled() && allowFakeTimers) {
27-
advanceTimers(timeout, () => finished)
28+
advanceTimers(() => finished)
2829
}
2930

3031
promise

src/helpers/fakeTimers.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,13 @@ export const fakeTimersAreEnabled = () => {
1212
return false
1313
}
1414

15-
export function advanceTimers(timeout: number | false, checkComplete: () => boolean) {
16-
const advanceTime = async (currentMs: number) => {
17-
if (!timeout || currentMs < timeout) {
15+
export function advanceTimers(checkComplete: () => boolean) {
16+
const advanceTime = async () => {
17+
if (!checkComplete()) {
1818
jest.advanceTimersByTime(1)
19-
2019
await Promise.resolve()
21-
22-
if (checkComplete()) {
23-
return
24-
}
25-
await advanceTime(currentMs + 1)
20+
await advanceTime()
2621
}
2722
}
28-
return advanceTime(0)
23+
return advanceTime()
2924
}

0 commit comments

Comments
 (0)