如何在Javascript工作程序中“正确”产生消息处理?

问题描述 投票:1回答:1

[在工人中,我需要定期让步,以允许事件循环安排传入消息的处理。—目前,我以新的承诺和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();

是否有一种更紧凑的方法来自愿进行处理?-好像我在这里遗漏了一些东西:这看起来像是一项超常规的任务,但是没有“自然”的方法?

javascript asynchronous async-await event-loop
1个回答
0
投票

您可以使用generator functions,它至少在语义上清楚函数的行为方式,但可能不比async函数“紧凑”。并将控件留给消息队列,您可以等待另一个消息队列(即MessageChannel中的一个),该队列将为faster than setTimeout

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.