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