# luo-web-worker

> JavaScript multithreading

Latest version **1.0.3** (published 2021-09-04) · MIT license · 0 weekly downloads

## Install

```sh
npm install luo-web-worker
pnpm add luo-web-worker
yarn add luo-web-worker
bun add luo-web-worker
```

## Health

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

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.3 |
| Published | 2021-09-04 |
| First published | 2019-11-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 10.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | make 2019 by luo |
| Maintainers | luo195289 |

## Links

- npm: https://www.npmjs.com/package/luo-web-worker
- npm.io page: https://npm.io/package/luo-web-worker

## Recent versions

- 1.0.3 (latest) — 2021-09-04
- 1.0.2 — 2019-11-24
- 1.0.1 — 2019-11-23

## README

# Luo-Web-Worker

> JavaScript multithreading


## Install

```bash
npm install luo-web-worker -S
```

## Usage

```js
import WorkerWrapper from 'luo-web-worker';

let va = 1;         // 对应argA参数
let vb = 2;         // 对应argB参数
const worker = WorkerWrapper.run((argA, argB) => {
  console.log(argA);
  console.log(argB);
  return 4;
}, [va, vb]).then((res) => {     // res为线程函数返回值
  console.log(res);
}).catch((e) => {
  console.log(e);
});
```

## long模式示例

```js
示例一：
var worker = vm.$worker.run(() => {

    self.addEventListener("message", function (e) {
      console.log(e);
    }, true);

    // var now = Date.now();

    self.postMessage('hello2');
    // setTimeout(() => self.postMessage('hello2'));

    // while (true) {
    //   if (Date.now() - now >= 5000) {
    //     self.postMessage('hello2');
    //     now = Date.now();
    //   }
    // }
    console.log(1111);

    setInterval(function () {
      console.log('test');
    }, 2000);
    return 6;
  }, [], {mode: 'long', onmessage: (msg) => {
    console.log(window);
    console.log(msg);
  }}).then(([res, worker]) => {
    console.log(res);
    setTimeout(() => alert(1) + worker.close(),   10000);
    // setTimeout(() => alert(2) + worker.postMessage({mode: 'long', message: 'hello4'}), 10000);
  }).catch((e) => {
    // console.log(22);
    // worker = null;
  });




示例二：
const actions = [{
  message: 'func1',
  func: (va) => {
    self.addEventListener("message", function (e) {
      console.log(e);
    }, true);


    // var now = Date.now();

    self.postMessage('hello2');
    // setTimeout(() => self.postMessage('hello2'));

    // while (true) {
    //   if (Date.now() - now >= 5000) {
    //     self.postMessage('hello2');
    //     now = Date.now();
    //   }
    // }
    console.log(1111);

    setInterval(function () {
      console.log('test');
    }, 2000);
    return 6;
  }
}];
const worker = vm.$worker.create(actions);



worker.postMessage('func1', ['hhhhh'], {mode: 'long', onmessage: (msg) => {
  console.log(window);
  console.log(msg);
}})
.then(([res, worker]) => {
  console.log(res);
  // setTimeout(() => alert(1) + worker.close(),   10000);
  setTimeout(() => alert(2) + worker.postMessage({mode: 'long', message: 'hello4'}), 10000);
}).catch(e => {
  // console.error(e);
})






注意：
一：long模式时 " then(([res, worker]) " then里返回参数是数组，res为返回的消息，worker为worker实例对象
二：long模式时 需要用 worker.close() 手动关闭线程（需要时）
三：long模式时 主线程往worker线程发消息时一定要用 worker.postMessage({mode: 'long', message: 'xxxx'}) 这种格式
四：long模式时 worker线程里如果添加接收消息事件必需用addEventListener方式

```

## Props 

| 参数类型 | 说明 |
| ---------- | ----------- |
| 参数一 | 启动方法（create方式时为对应的func方法，里面如果添加接收消息事件必需用addEventListener方式） |
| 参数二 | 主线程传给worker线程的参数 |
| 参数三 | 配置 （可选） |
| 参数三mode | 模式（默认为单向模式，如设为long则为双向可发消息，且可返回worker对象，需手动关闭线程） |
| 参数三onmessage | 配置worker线程向主线程发消息事件 |

# License

This content is released under the [MIT](http://opensource.org/licenses/MIT) License.

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