Javascript,如何实现"阻止"从多个工人调用的函数

时间:2016-01-25 11:11:16

标签: javascript asynchronous web-worker

我很感激为这个问题提供了一些好的实施方案。

我有一个来自不同工人的功能A.该函数实际上向我的服务器发出了一个AJAX请求(实际上它对任何一个worker都是相同的查询)。

我想要的只是第一次调用functionA发出请求并阻止所有其他调用,直到服务器请求完成并将值返回给所有worker。

提前致谢。

2 个答案:

答案 0 :(得分:2)

每当你想在JavaScript中阻止时,你做错了什么。要解决您的问题,您需要一种线程同步方法。 JavaScript中没有这样的东西。

这样做的唯一选择是确保您的请求只能从一个线程发送。

例如,确保只有主GUI线程或特定共享工作人员负责加载请求。解决方案:所有其他工作人员将发送消息,以便在加载数据时查询请求并接收消息。

您没有提供任何问题的代码,因此我也没有提供代码。

答案 1 :(得分:-1)

function load() {
    // make AJAX and return a promise
}

var promise; // create a promise and resolve it.
function loadBlocked() {
  return (promise = promise.then(load, load));
}