function App() {
const fun = (e) => e
const messageToWorker = 'hello, world!'
const [result, error] = useWorker(fun, messageToWorker)
console.log('res', result)
return (
<div>
<p>Message from worker: {result}</p>
</div>
)
}
const [result, error]: [R, string | null] =
useDubouncedFunction<T, R>(fn: (message: T) => R, message: T);
fn
: Function
- 需要在 web Worker 中执行的函数;message
: T
- 需要为函数传递的参数;result
: R
- 函数执行的结果;error
: string | null
- 如果函数执行错误返回的错误信息
在测试过程中,发现递归函数会出现一些问题,导致不能正确的返回结果。如以下代码:
const fib = (i) => (i <= 1 ? i : fib(i - 1) + fib(i - 2))
这是由于在 Worker 中,全局对象不是主线程中的window
对象,而是self
对象。会报错fib
未声明。
需要将代码在代码中再次进行声明,改写如下:
const fib = function (i) {
const fibInner = function (i) {
return i <= 1 ? i : fibInner(i - 1) + fibInner(i - 2)
}
return fibInner(i)
}