Concurrency 如何在Chrome扩展中发出多个并行web html请求?

Concurrency 如何在Chrome扩展中发出多个并行web html请求?,concurrency,xmlhttprequest,google-chrome-extension,web-worker,Concurrency,Xmlhttprequest,Google Chrome Extension,Web Worker,我想在Chrome扩展中检索和解析多个html页面 对每个请求使用Web Workers似乎是使它们并行执行的一种简单方法。可能吗?我的尝试失败了,也许是因为这是一个已知的错误 作为一种解决方法,我想我可以让主扩展页执行多个异步XmlHttpRequests,然后让回调函数将结果页发送给Web工作者进行并行解析。但这种方法提出了一个问题:Chrome一次可以发出多少异步并行请求?有人问了这个问题,但没有回答 我正在编写的Chrome扩展是一个浏览器操作 工作人员的代码: // Triggere

我想在Chrome扩展中检索和解析多个html页面

对每个请求使用Web Workers似乎是使它们并行执行的一种简单方法。可能吗?我的尝试失败了,也许是因为这是一个已知的错误

作为一种解决方法,我想我可以让主扩展页执行多个异步XmlHttpRequests,然后让回调函数将结果页发送给Web工作者进行并行解析。但这种方法提出了一个问题:Chrome一次可以发出多少异步并行请求?有人问了这个问题,但没有回答

我正在编写的Chrome扩展是一个浏览器操作

工作人员的代码:


// Triggered by postMessage in the page
onmessage = function (evt) {
    var message = evt.data;
    postMessage(message.count + " started");
    update(message.count, message.url);
};

// parse the results page
function parseResponse(count, url, resp) {
    var msg = count.toString() + " received response ";
    postMessage(msg);
}

// read the Buganizer URL and parse the result page
var update = function(count, url) {
  var xhr = new XMLHttpRequest();
      xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
          parseResponse(count, url, xhr.responseText);
        }
      }
  xhr.onerror = function(error) {
      var msg = "!>: " + count + ": error ";
      postMessage(msg);
  }
  var url = "http://www.hotgrog.com"; // for testing (manifest has permissions for this url)
  xhr.open("GET", url, true);
  xhr.send();
  postMessage(url);
}


您是否考虑过尝试诸如或之类的异步加载程序


请看作者关于的解释。

您是否考虑过尝试诸如或之类的异步加载程序


看看作者关于的解释。

你肯定需要并行解析吗?我有一种感觉,99%的时间将用于请求页面,1%用于解析。在这种情况下,工人并不是真正有用的。Ajax请求已经是异步的,所以不管你是否将它们放入worker中,它都不会改变任何东西——你会遇到完全相同的网络限制。是的,如果我不使用单独的worker,我剩下的问题是Chrome中可以并发出现多少XmlHttpRequests?我猜,这在你链接的问题中得到了回答(顶部第二个答案)。你肯定需要并行解析吗?我感觉99%的时间将用于请求页面,1%的时间用于解析。在这种情况下,worker并不是真正有用的。Ajax请求已经是异步的,所以无论你是否将它们放入worker中,它都不会改变任何东西-你将遇到完全相同的网络限制。Y,如果我不使用单独的worker,剩下的问题是Chrome中可以同时出现多少XmlHttpRequests?我猜,您链接的问题(顶部的第二个答案)回答了这个问题。