refactor: cleanup eslint configuration
[poolifier.git] / examples / typescript / http-client-pool / src / main.ts
1 import { availableParallelism } from 'poolifier'
2
3 import { httpClientPool } from './pool.js'
4 import type { WorkerResponse } from './types.js'
5
6 const parallelism = availableParallelism() * 2
7 const requestUrl = 'http://localhost:8080/'
8
9 for (const workerFunction of ['node_fetch', 'fetch', 'axios']) {
10 const httpClientPoolPromises = new Set<Promise<WorkerResponse>>()
11 for (let i = 0; i < parallelism; i++) {
12 httpClientPoolPromises.add(
13 httpClientPool.execute({ input: requestUrl }, workerFunction)
14 )
15 }
16 try {
17 const now = performance.now()
18 const responses = await Promise.all(httpClientPoolPromises)
19 const elapsedTime = performance.now() - now
20 console.info(
21 `Received in ${elapsedTime.toFixed(2)}ms an array with ${
22 responses.length
23 } responses from ${parallelism} parallel requests made with HTTP client pool task function ${workerFunction} on ${requestUrl}:\n`,
24 responses
25 )
26 } catch (error) {
27 console.error(error)
28 }
29 }