Skip to content

Commit 59f8c94

Browse files
laporchenantfu
andauthored
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

Lines changed: 21 additions & 0 deletions
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

Lines changed: 2 additions & 1 deletion
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy