簡體   English   中英

如何“正確”讓出 Javascript worker 進行消息處理?

[英]How to “properly” yield in a Javascript worker for message processing?

在 Worker 中,我需要定期讓出以允許事件循環安排傳入消息處理。—目前我使用新的 promise 和setTimeout()來做到這一點。

addEventListener('message', () => console.log('reading incoming message'));
async function work() {
    while (true) {
        // do a piece of work
        await new Promise(resolve => setTimeout(resolve, 0));
        // break if ordered via message
    }
}
work();

有沒有一種更緊湊的方式來自願放棄處理?——感覺好像我在這里遺漏了什么:這看起來是一項非常常見的任務,但沒有“自然”的方式去做?

您可以使用生成器函數,它至少在語義上更清楚 function 的行為方式,但可能不會比異步function 更“緊湊”。
要將控制權留給消息隊列,您可以等待其他消息隊列(即 MessageChannel 中的一個),這會setTimeout更快

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM