1.0.5 • Published 7 years ago

multi-web-worker v1.0.5

Weekly downloads
2
License
MIT
Repository
-
Last release
7 years ago

@mfelibs/multiWorker

安装

yarn add  @mfelibs/multiWorker --save

通过 import 导入

import multiWorker from '@mfelibs/multiWorker'

使用

调用 multiWorker 构造函数,创建multiWorker实例:

const config = { //可配置的config选项
  maxWorkers:4 ,//最大可并行的worker数,默认取navigator.hardwareConcurrency
}
mWorker = new multiWorker(config);

mWorker.add().excu(recurFib,[10]).then(()=>{
  console.log(res) //output->55
})
function recurFib(n) {
    if (n == 1 || n == 2) {
        return 1;
    }
    return recurFib(n - 1) + recurFib(n - 2);
   
}

multiWorker方法

add

  • id : String | Number 创建worker的id,参数为空时会自动分配id (非必需)

  • fn : Function worker 要执行的方法 (非必需)

  • args : Any 此方法的参数 (非必需)

此方法默认返回当前worker的实例 通过add方法创建的worker会加入队列中,队列最大并行的worker可通过maxWorker配置

示例:

mWorker.add()

或

mWorker.add({
  id:id,
  fn:recurFib,
  args:10 ,
  xx:xxx
})

getWorker

  • id:根据id查找已创建的worker; ( 非必需)
    • id为空时返回全部worker的集合
    • id为String|Number时 ,返回指定worker
    • id为Array时,返回指定id 的 worker集合

示例:

mWorker.getWorker(id)

getIdleWorker

  • id:根据id查找空闲的worker;( 非必需)
    • id为空时返回全部worker
    • id为String|Number时 ,返回指定worker
    • id为Array时,返回指定id 的 worker集合

示例:

mWorker.getWorker(id)

removeWorker

  • id: 根据id 终止worker进程( 非必需)
    • id为终止全部worker
    • id为String|Number时 ,终止单个worker
    • id为Array时,终止指定id 的 worker集合

无返回值

示例:

mWorker.kill(id)

race

类似Promise.race,返回最先在worker中执行完的结果

  • excuFn: Array 执行的方法和参数( 必需) [ { fn: fn1, args: args1 },{ fn: fn2, args: args2 }{ fn: fn3, args: args3 }]
    • fn为执行的函数
    • args为参数

无返回值

示例:

mWorker.race([{ fn: recurFib, args: 2 }, { fn: recurFib, args: 10 }]).then((res) => {
    document.write(`Fibonacci(${10}):${res}<br>`)
})

worker方法

excu

接受两个参数 fn,args

  • fn:需要在webWorker里执行的方法 (必需)
  • args:依赖的参数 (非必需)
mWorker.getWorker(id).excu(recurFib,[10]).then((res)=>{
  console.log(res) //output->55
}).catch((error)=>{
  console.log(error);
})
1.0.5

7 years ago

1.0.4

7 years ago