Я хочу получить и проанализировать несколько 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);
}