是否可以允许在 javascript 中的主线程中等待

Is it possible to allow waiting in the main thread in javascript

本文关键字:线程 等待 javascript 是否      更新时间:2023-09-26

我目前正在使用 Web Workers,出于某些测试目的,如果可以在主线程中等待,直到 worker 完成他们正在做的事情,那就太好了。所以:

主线程 ->启动工作线程

主线程 ->等待工人完成

工人 ->做一些工作

工人们完成。

主线程 ->做一些事情。

我意识到最正确的方法是在主线程中使用回调,每当工人完成时都会调用该回调,但由于实际原因,这将不起作用。我已经制作了类似于Java中的CyclicBarrier的东西,但是每当我在主线程中调用barrier.enter()时,我当然会收到错误。因此,我想知道的是,是否可以设置任何设置或类似的东西,暂时允许我在主线程上阻止。顺便说一句,我正在使用节点运行我的程序。

这纯粹是出于测试目的,我当然永远不会在生产环境中使用它!

如果你坚持不使用事件,你就把自己置于一个棘手的境地。如果阻塞主线程,则无法处理工作线程发送的事件。工作线程和主线程之间没有其他通信通道。

还是有?您可以创建一个 HTTP 服务器,将所有数据从工作线程中继到主线程。主线程可以在该服务器上创建同步 HTTP 请求。同步 AJAX 请求确实会阻塞主线程,但不会占用 CPU。