Как сделать несколько параллельных веб-запросов HTML в расширении Chrome? - PullRequest
2 голосов
/ 11 мая 2011

Я хочу получить и проанализировать несколько html-страниц в расширении Chrome.

Использование Web Workers для каждого запроса казалось простым способом заставить их выполняться параллельно. Это возможно? Моя попытка не удалась, возможно, потому что это известная ошибка прав доступа .

В качестве обходного пути, я думаю, я мог бы заставить главную страницу расширения выполнить несколько асинхронных XmlHttpRequests, а затем сделать так, чтобы обратный вызов отправил страницу результатов Web Workers для параллельного анализа. Но этот метод поднимает вопрос о том, сколько асинхронных параллельных запросов может сделать 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);
}

1 Ответ

0 голосов
/ 11 мая 2011

Вы пробовали попробовать асинхронные загрузчики, такие как RequireJS или Curl ?

Взгляните на объяснение авторов относительно ПОЧЕМУ мы должныиспользовать его продукт .

...