🍵 Run pure function in Web Worker easily. Allows add functions to Web Worker dynamically, there are no preset .js
files.
This package help you use Web Worker
in a human way.
npm i funcwork
import { FuncWork } from 'funcwork'
const fw = new FuncWork()
const add = (a, b) => a + b
fw.add(add)
// The `add` function will be running in Web Worker.
// So you can do other things in main process.
fw.invoke(add, [1, 1]).then((result) => {
console.log(result) // 2
})
import { FuncWork } from 'funcwork'
const fw = new FuncWork()
const add = (a, b) => a + b
function sub(a, b) {
return a - b
}
fw.add(add, sub)
import { FuncWork } from 'funcwork'
const fw = new FuncWork()
const add = (a, b) => a + b
fw.add(add)
fw.invoke(add, [1, 1]).then((result) => {
console.log(result) // 2
})
// or
fw.invoke('add', [1, 2]).then((result) => {
console.log(result) // 3
})
// recommended way
(async () => {
try {
const result = await fw.invoke('add', [1, 3])
console.log(result) // 4
}
catch (err) {
// It may be an exception thrown by the Web Worker, or the process of function execution
console.log(err)
}
})()
import { FuncWork } from 'funcwork'
const fw = new FuncWork()
// ...
// Destroy Funcwork instance, it will clear all function and terminate Web Worker instance.
fw.destroy()
-
Arguments
- options:
Web Worker
options, get detail here
- options:
-
Returns
Funcwork
instance -
Usage
Create
Funcwork
instanceimport { FuncWork } from 'funcwork' const fw = new FuncWork() // or const fw = new FuncWork({ credentials: '', name: '', type: '' })
-
Arguments
- { Function } fn
-
Returns
this
-
Usage
Add function to
Web Worker
import { FuncWork } from 'funcwork'; const fw = new FuncWork(); function add (a, b) { return a + b; } fw.add(add); fw.add(function sub(a, b) { return a - b}); // multiple const f3 = () => { // ... }; fw.add(function f1() {}, function f2, f3); // Chain calls fw.add(function f4() {}) .add(function f5() {});
-
Arguments
- { string | Function } name
- { Array } params
-
Returns
- Promise
data
is the result returned after the function is executed
- Promise
-
Usage
Call the registered function
import { FuncWork } from 'funcwork'; const fw = new FuncWork(); function add (a, b) { return a + b; } fw.add(add); fw.inoke(add, [1, 2]).then(data => { console.log(data); // 3 }) fw.invoke('add', [1, 3]).then(data => { console.log(data); // 4 })
-
Arguments
- { string | Function } name
-
Returns
-
Usage
Remove a registered function
import { FuncWork } from 'funcwork'; const fw = new FuncWork(); function add (a, b) { return a + b; } fw.add(add); fw.remove('add'); // or fw.remove(add) fw.invoke(add) // throw new Error('add is not defined in Funcwork.')
-
Arguments
-
Returns
-
Usage
Clear all registered functions
import { FuncWork } from 'funcwork'; const fw = new FuncWork(); function add (a, b) { return a + b; } fw.add(add); fw.clear(); fw.invoke(add) // throw new Error('add is not defined in Funcwork.')
-
Arguments
-
Returns
-
Usage
List all registered functions
import { FuncWork } from 'funcwork'; const fw = new FuncWork(); function add (a, b) { return a + b; } function sub(a, b) { return a - b; } fw.add(add, sub); fw.list(); // "add | sub"
-
Arguments
-
Returns
-
Usage
Clear all function and terminate Web Worker instance.
import { FuncWork } from 'funcwork'; const fw = new FuncWork(); // do something... fw.destroy();