Skip to content

Commit 59f8c94

Browse files
laporchenantfu
andauthoredOct 24, 2024··
fix(useIntervalFn): prevent timer being set after pause is called in cb (#4258)
Co-authored-by: Anthony Fu <anthonyfu117@hotmail.com>
1 parent f71e513 commit 59f8c94

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed
 

‎packages/shared/useIntervalFn/index.test.ts

+21
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,27 @@ describe('useIntervalFn', () => {
9191
expect(callback).toHaveBeenCalledTimes(0)
9292
})
9393

94+
it('pause in callback', async () => {
95+
const pausable = useIntervalFn(() => {
96+
callback()
97+
pausable.pause()
98+
}, 50, { immediateCallback: true, immediate: false })
99+
100+
pausable.resume()
101+
expect(pausable.isActive.value).toBeFalsy()
102+
expect(callback).toHaveBeenCalledTimes(1)
103+
104+
await promiseTimeout(60)
105+
expect(callback).toHaveBeenCalledTimes(1)
106+
107+
pausable.resume()
108+
expect(pausable.isActive.value).toBeFalsy()
109+
expect(callback).toHaveBeenCalledTimes(2)
110+
111+
await promiseTimeout(60)
112+
expect(callback).toHaveBeenCalledTimes(2)
113+
})
114+
94115
it('cant work when interval is negative', async () => {
95116
const { isActive } = useIntervalFn(callback, -1)
96117

‎packages/shared/useIntervalFn/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ export function useIntervalFn(cb: Fn, interval: MaybeRefOrGetter<number> = 1000,
5656
if (immediateCallback)
5757
cb()
5858
clean()
59-
timer = setInterval(cb, intervalValue)
59+
if (isActive.value)
60+
timer = setInterval(cb, intervalValue)
6061
}
6162

6263
if (immediate && isClient)

0 commit comments

Comments
 (0)
Please sign in to comment.