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

时间:2016-03-08 18:59:38

标签: javascript blocking web-worker cyclicbarrier

我目前正在与Web Workers合作,并且出于一些测试目的,如果可以在主线程中等待,直到工人完成他们正在做的事情,那将是很好的。所以:

主线程 - >启动工人

主线程 - >等待工人完成

工人 - >做一些工作

工人完成。

主线程 - >做一些事情。

我意识到最正确的方法是在主线程中使用回调,只要工作人员完成就会调用,但是由于实际原因这不起作用。我在Java中创建了类似于CyclicBarrier的东西,但每当我在主线程中调用barrier.enter()时,我当然会得到一个错误。因此,我想知道的是,如果有任何设置或类似的东西,我可以设置暂时允许我阻止主线程。我正在使用Node btw运行我的程序。

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

1 个答案:

答案 0 :(得分:0)

如果您坚持不使用活动,那么您就会陷入棘手的境地。如果阻止主线程,则无法处理工作程序完成后发送的事件。工作者和主线之间没有其他沟通渠道。

还是有吗?您可以创建一个HTTP服务器,将所有数据从worker转发到主线程。主线程可以在该服务器上create a synchronous HTTP request。同步AJAX请求会阻塞主线程但不占用CPU。