我想使用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.
我怎样才能实现这一点,因为没有办法暂停/恢复网络工作者?