docs: refactor TS example
[poolifier.git] / examples / typescript / pool.ts
CommitLineData
a449b585
JB
1import { dirname, extname, join } from 'node:path'
2import { fileURLToPath } from 'node:url'
ded253e2 3
6961ca9a 4import {
ded253e2 5 availableParallelism,
6961ca9a 6 DynamicThreadPool,
ded253e2 7 FixedThreadPool
6961ca9a 8} from 'poolifier'
e9e16250 9
ded253e2
JB
10import type { MyData, MyResponse } from './worker.js'
11
9bc1ca75
JB
12const workerFile = join(
13 dirname(fileURLToPath(import.meta.url)),
14 `worker${extname(fileURLToPath(import.meta.url))}`
15)
16
fbcf5e15 17const fixedPool = new FixedThreadPool<MyData, MyResponse>(
6961ca9a 18 availableParallelism(),
9bc1ca75 19 workerFile,
e9e16250 20 {
a974afa6
JB
21 errorHandler: (e: Error) => {
22 console.error(e)
23 },
24 onlineHandler: () => {
53795b86 25 console.info('Worker is online')
a974afa6 26 }
e9e16250 27 }
cf9aa6c3 28)
e9e16250 29
fbcf5e15
JB
30await fixedPool.execute()
31
32const dynamicPool = new DynamicThreadPool<MyData, MyResponse>(
31a7d5be 33 Math.floor(availableParallelism() / 2),
6961ca9a 34 availableParallelism(),
9bc1ca75 35 workerFile,
e9e16250 36 {
a974afa6
JB
37 errorHandler: (e: Error) => {
38 console.error(e)
39 },
40 onlineHandler: () => {
53795b86 41 console.info('Worker is online')
a974afa6 42 }
e9e16250 43 }
cf9aa6c3 44)
31e4baca 45
fbcf5e15
JB
46await dynamicPool.execute()
47
31e4baca
JB
48// eslint-disable-next-line @typescript-eslint/no-misused-promises
49setTimeout(async () => {
50 await fixedPool.destroy()
51 await dynamicPool.destroy()
52}, 3000)