Skip to content

Commit

Permalink
fix(web-worker): ensure event listener functions are bound correctly (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
freshollie committed Jun 14, 2022
1 parent 2e16fb9 commit c6f2346
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 2 deletions.
4 changes: 2 additions & 2 deletions packages/web-worker/src/pure.ts
Expand Up @@ -102,8 +102,8 @@ export function defineWebWorker() {
this.inside.emit(event.type, event)
return true
},
addEventListener: this.inside.on,
removeEventListener: this.inside.off,
addEventListener: this.inside.on.bind(this.inside),
removeEventListener: this.inside.off.bind(this.inside),
postMessage: (data) => {
this.outside.emit('message', { data })
},
Expand Down
3 changes: 3 additions & 0 deletions test/web-worker/src/eventListenerWorker.ts
@@ -0,0 +1,3 @@
self.addEventListener('message', (e) => {
self.postMessage(`${e.data} world`)
})
7 changes: 7 additions & 0 deletions test/web-worker/test/init.test.ts
@@ -1,6 +1,7 @@
import { expect, it } from 'vitest'

import MyWorker from '../src/worker?worker'
import MyEventListenerWorker from '../src/eventListenerWorker?worker'

const testWorker = (worker: Worker) => {
return new Promise<void>((resolve) => {
Expand All @@ -23,6 +24,12 @@ it('simple worker', async () => {
await testWorker(new MyWorker())
})

it('event listener worker', async () => {
expect.assertions(1)

await testWorker(new MyEventListenerWorker())
})

it('can test workers several times', async () => {
expect.assertions(1)

Expand Down

0 comments on commit c6f2346

Please sign in to comment.