相关疑难解决方法(0)

如何让Web Workers在执行计算时接收新数据?

我想使用Web Workers对数组进行排序.但是这个数组可能会随着时间的推移接收到新值,而worker仍在执行sort函数.

所以我的问题是,如何在收到新项目后"停止"工作者的排序计算,这样它就可以对该项目执行数组排序,同时仍然保留已经进行的排序?

例:

let worker = new Worker('worker.js');
let list = [10,1,5,2,14,3];
worker.postMessage({ list });
setInterval(() => worker.postMessage({ num: SOME_RANDOM_NUM, list }), 100);

worker.onmessage = event => {
  list = event.data.list;
}
Run Code Online (Sandbox Code Playgroud)

让我们说,我已经过了50岁,工人在此之前在排序方面取得了一些进展,现在我有这样的事情: [1, 2, 3, 10, 5, 14, 50].这意味着排序在索引处停止3.所以我将这个new数组传递回worker,因此它可以继续从位置进行排序3.

我怎样才能实现这一点,因为没有办法暂停/恢复网络工作者?

javascript sorting interrupt worker web-worker

2
推荐指数
1
解决办法
165
查看次数

标签 统计

interrupt ×1

javascript ×1

sorting ×1

web-worker ×1

worker ×1