我很感激为这个问题提供了一些好的实施方案。
我有一个来自不同工人的功能A.该函数实际上向我的服务器发出了一个AJAX请求(实际上它对任何一个worker都是相同的查询)。
我想要的只是第一次调用functionA发出请求并阻止所有其他调用,直到服务器请求完成并将值返回给所有worker。
提前致谢。
答案 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));
}