javascript - 为什么 Firefox 会等到一个 javascript 函数完成后再启动另一个函数?

标签 javascript multithreading firefox gwt

我们正在前端使用 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/

相关文章:

javascript - 如何在 angularjs 中将外部文件中的 HTML 表转换为 JSON

javascript - AngularJS 类型错误 : undefined is not a function on ng-view directive

javascript - Angularjs + Bootstrap : Google Page Insight test

javascript - 如何在click handler中获取event.target元素对应的react组件实例?

c# - BlockingCollection——高同步问题

android - 有没有办法进行多线程sqlite事务并检查数据库锁定状态

c - 多线程程序中的段错误

javascript - 无法让 JavaScript 代码在 Firefox 上运行

firefox - 说服 Firefox 通过 HTTPS 发送 If-Modified-Since header

css - 在 Firefox 中向占位符添加星号,-moz-placeholder::before 不再有效