web-worker-func
- 更简单的webWorker使用方法,无需添加额外的worker.js文件
- source code
Install
npm install web-worker-func
or
yarn add web-worker-func
Usage
import webWorkerBuilder from 'web-worker-func'
const numbers = [...Array(5000000)].map(e => ~~(Math.random() * 1000000));
const sortFunc = nums => nums.sort();
const webWorkerSortFunc = webWorkerFuncBuilder(sortFunc)
webWorkerSortFunc(numbers)
.then((res) => {
// 返回在webWoker中计算好的结果
console.log(res)
})
支持 umd(dist/index.umd.js)、 esm(dist/index.esm.js) 、 cjs(dist/index.js) 各种模式引入
eg: 可直接在html中引入 <script src="../dist/index.umd.js" type="text/javascript"></script>
然后使用`window.webWorkerFuncBuilder
API
type Func = (...args: any) => any;
type WebWorkerBuilder = <T extends Func>(fn: T, options?: Options) => (...args: Parameters<T>) => Promise<ReturnType<T>>;
type Options = {
timeout?: number,
importScripts?: string[],
depsFunc?: Func[],
transferable?: boolean
};
- options
- timeout 过期时间设置
- importScripts worker文件引入的依赖
- depsFunc fn函数运算时依赖的函数
- transferable (可转让对象)是否使用高性能的通过转让所有权的方式来传递数据, 具体可参考MDN