Skip to content

Commit 49b4cc0

Browse files
koddssonkeithamus
andcommitted
Use abort controller to remove event handlers
Co-authored-by: Keith Cirkel <keithamus@users.noreply.github.com>
1 parent 57148d0 commit 49b4cc0

1 file changed

Lines changed: 9 additions & 11 deletions

File tree

src/lazy-define.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,15 @@ const ready = new Promise<void>(resolve => {
99
})
1010

1111
const firstInteraction = new Promise<void>(resolve => {
12-
const handler = () => {
13-
resolve()
14-
document.removeEventListener('mousedown', handler)
15-
document.removeEventListener('touchstart', handler)
16-
document.removeEventListener('keydown', handler)
17-
document.removeEventListener('pointerdown', handler)
18-
}
19-
document.addEventListener('mousedown', handler, {once: true})
20-
document.addEventListener('touchstart', handler, {passive: true, once: true})
21-
document.addEventListener('keydown', handler, {once: true})
22-
document.addEventListener('pointerdown', handler, {once: true})
12+
const controller = new AbortController()
13+
controller.signal.addEventListener('abort', () => resolve())
14+
const listenerOptions = {once: true, passive: true, signal: controller.signal}
15+
const handler = () => controller.abort()
16+
17+
document.addEventListener('mousedown', handler, listenerOptions)
18+
document.addEventListener('touchstart', handler, listenerOptions)
19+
document.addEventListener('keydown', handler, listenerOptions)
20+
document.addEventListener('pointerdown', handler, listenerOptions)
2321
})
2422

2523
const strategies = {

0 commit comments

Comments
 (0)