gpt4 book ai didi

javascript - 如果工作人员很忙,是否仍会收到发送给网络工作人员的消息?

转载 作者:行者123 更新时间:2023-11-30 19:30:07 24 4
gpt4 key购买 nike

我有一个系统,我将一个大数组发送到 worker,然后它使用一个库来压缩它。压缩需要很长时间,使工作人员很忙。我想知道在工作人员仍然忙碌时是否会收到发送给工作人员的更多消息。消息会丢失吗?他们也会排队并最终由工作人员处理吗?

最佳答案

是的,一旦 worker 完成了当前正在处理的工作,它将能够处理队列中的下一条消息。这是一个例子:

// https://stackoverflow.com/questions/10343913/how-to-create-a-web-worker-from-a-string
// I put in a Stack Snippet for live demonstration
// in a real project, put this in a separate file
const workerFn = () => {
self.onmessage = () => {
self.postMessage('Worker message callback just fired');
// something expensive
for (let i = 0; i < 2e9; i++) {

}
self.postMessage('Expensive operation ending');
};
};
const workerFnStr = `(${workerFn})();`;
const blob = new Blob([workerFnStr], { type: 'text/javascript' });
const worker = new Worker(window.URL.createObjectURL(blob));

worker.onmessage = ({ data }) => console.log(data);

worker.postMessage(null);
worker.postMessage(null);

这类似于点击 DOM 中的元素时,在当前事件循环任务完成后处理点击,即使所述任务很昂贵。

setTimeout(() => {
window.onclick = () => console.log('click callback running');

// something expensive
for (let i = 0; i < 3e9; i++) {
}

console.log('Main synchronous task finishing');
}, 500);
Click here *quickly* after running the snippet

关于javascript - 如果工作人员很忙,是否仍会收到发送给网络工作人员的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56510856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com