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