如何在 JavaScript 任务队列中排队(宏)任务?

How to queue a (macro)task in the JavaScript task queue?

在浏览器事件循环中使用JavaScriptqueue a task最直接直接的方法是什么?

不起作用的东西:

MessagePort.postMessage 就是这样做的。

onmessage = e => handleMessage;
postMessage("","*");

你甚至可以使用 MessageChannel 如果你想要一个较少干扰的意思:

const channel = new MessageChannel();
channel.port1.onmessage = handleMessage;
channel.port2.postMessage('');

这是目前唯一的 API 同步 排队任务 ,所有其他的都意味着至少一些 并行 执行。

也许有一天我们会有一个 scheduler.postTask 方法,它甚至可以让我们为我们的任务指定一些优先级,但这只是为了将来......