我们正在前端使用 GWT 开发 Web 应用程序。
在 GWT 中,我们通过附加如下所述的 javascript 代码来调用服务器:
public native static void call(int requestId, String url, ICall handler) /*-{
var callback = "callback" + requestId;
//Create a script element.
var script = document.createElement("script");
script.setAttribute("src", url+callback);
script.setAttribute("type", "text/javascript");
script.setAttribute("async", "true");
//Define the callback function on the window object.
window[callback] = function(response) {
handler.@com.xxx.yyy.gui.net.ICall::handleResponse(Ljava/lang/String;)(response);
}
//Attach the script element to the document body.
document.body.appendChild(script);
}-*/;
有些调用需要一分钟才能完成,有些则只需几秒钟。如果我们同时进行多个调用,所有调用都是并行执行的。这意味着在 2 秒内结束的调用不必等到持续一分钟的调用结束。在 Chrome 和 Safari 中都是如此。然而,Firefox 会等到第一个调用的函数完成后才启动其他函数。
为什么 Firefox 会等到一个 javascript 函数完成后再启动另一个函数?如何解决这个问题?
谢谢
最佳答案
您可以通过网络 worker 将 HTML5 与多线程 JavaScript 结合使用。首先检查您的浏览器是否支持此功能。
function supports_web_workers() {
return !!window.Worker;
}
然后开始使用多线程。
// thread1
var myBread = new Worker('bread.js');
// thread2
var myButter = new Worker('butter.js');
我自己从未尝试过,如果我错了请纠正我。
关于javascript - 为什么 Firefox 会等到一个 javascript 函数完成后再启动另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3357925/