# @feige0629/web-worker-pools

> web worker

Latest version **0.1.15** (published 2024-08-07) · ISC license · 0 weekly downloads

## Install

```sh
npm install @feige0629/web-worker-pools
pnpm add @feige0629/web-worker-pools
yarn add @feige0629/web-worker-pools
bun add @feige0629/web-worker-pools
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.15 |
| Published | 2024-08-07 |
| First published | 2023-09-18 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=18.15.0 |
| Dependencies | 0 |
| Unpacked size | 79.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | tangfei |
| Maintainers | tangfei0629 |

## Links

- npm: https://www.npmjs.com/package/@feige0629/web-worker-pools
- npm.io page: https://npm.io/package/@feige0629/web-worker-pools

## Recent versions

- 0.1.15 (latest) — 2024-08-07
- 0.1.14 — 2024-07-30
- 0.1.13 — 2024-07-30
- 0.1.12 — 2024-07-30
- 0.1.11 — 2024-07-29
- 0.1.10 — 2023-12-04
- 0.1.9 — 2023-11-15
- 0.1.8 — 2023-10-13
- 0.1.7 — 2023-09-19
- 0.1.6 — 2023-09-19
- 0.1.5 — 2023-09-19
- 0.1.4 — 2023-09-19
- 0.1.3 — 2023-09-18
- 0.1.2 — 2023-09-18
- 0.1.1 — 2023-09-18
- … 1 more at https://npm.io/package/@feige0629/web-worker-pools/versions

## README

# 简介
web-worker-pools 为 worker 创建线程池

## 1、使用

### 主线程代码
```js
import Worker from './worker?worker';
import { webWorkerPools } from '@feige0629/web-worker-pools';
export interface ParamsType {
    name:string;
}
export type ResultType = string;

const workerPools = new webWorkerPools<ParamsType, ResultType>({
  "debug": true,  //是否开启debug
  "processName": 'testFunc', // 进程名称
  "closeWorkerTime":60000,  // 检查空闲 Worker 是否需要关闭（60秒）
  "checkIdleInterval":60000  // 定时器间隔，用于检查空闲 Worker 是否需要关闭（60秒）
}, ()=>new Worker());

export const testFunc = async (params:ParamsType):Promise<ResultType> => {
    return workerPools.workerManager(params, 'task1');
}

// 调用自动销毁
workerPools.autoCloseWorker(['task1']);// ['task1']为保留任务不超时销毁
```
### worker线程代码
```ts
import type { WorkerParams } from '@feige0629/web-worker-pools';
import type { ResultType, ParamsType } from './';
import { handleMessage, handleError } from '@feige0629/web-worker-pools';

function getResult(params:WorkerParams<ParamsType>): ResultType {
  // 业务代码

  return params.name; //测试返回name
}

// 监听消息
self.addEventListener("message", async (event: MessageEvent) => {
  const params:WorkerParams<ParamsType> = event.data?.params;
  handleMessage<ParamsType, ResultType>(event, ()=> getResult(params))
}, false)

// 错误提示
self.addEventListener("error", handleError, false);
```

### 业务中使用
```ts
import React, { useEffect, useState } from "react";
import { testFunc } from './index';

export function App(){
  const [name, setName] = useState<string>('');
  
  useEffect(()=>{
    testFunc('飞哥')
    .then((result:string)=>{
      setName(result);
    })
  },[])

  return <div>{name}</div>
}

```

---
_Source: https://npm.io/package/@feige0629/web-worker-pools · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
