docs: update benchmarks vs. external pools
[poolifier.git] / examples / typescript / worker.ts
CommitLineData
cf9aa6c3 1import { ThreadWorker } from 'poolifier'
e9e16250
CQ
2
3export interface MyData {
f33d3b69 4 ok: 0 | 1
e9e16250
CQ
5}
6
7export interface MyResponse {
cf9aa6c3 8 message: string
9 data: MyData
e9e16250
CQ
10}
11
12class MyThreadWorker extends ThreadWorker<MyData, Promise<MyResponse>> {
cf9aa6c3 13 constructor () {
78cea37e
JB
14 // eslint-disable-next-line @typescript-eslint/promise-function-async
15 super((data: MyData) => this.process(data), {
815d4289 16 maxInactiveTime: 60000,
cf9aa6c3 17 async: true
18 })
e9e16250
CQ
19 }
20
cf9aa6c3 21 private async process (data: MyData): Promise<MyResponse> {
78cea37e 22 return await new Promise(resolve => {
e9e16250 23 setTimeout(() => {
cf9aa6c3 24 resolve({ message: 'Hello from Worker :)', data })
b93306dc 25 }, 10000)
cf9aa6c3 26 })
e9e16250
CQ
27 }
28}
29
cf9aa6c3 30export default new MyThreadWorker()