我在网络工作者中有以下代码:
self.addEventListener('message', function(e){
try {
var xhr=new XMLHttpRequest()
for(var i = 0; i < e.data.urls.length;i++){
xhr.open('GET', e.data.urls[i], true);
xhr.setRequestHeader('Accept', 'application/json');
xhr.send(null);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200 || xhr.status == 304 || xhr.status ==0) {
postMessage(xhr.responseText);
} else {
postMessage(xhr.status + xhr.responseText);
throw xhr.status + xhr.responseText;
}
}
};
}
} catch (e) {
postMessage("ERROR:"+e.message);
}
}, false);
e.data.urls 包含 16 个请求,这些请求在 UI 线程上处理,如下所示:
var replies = 0;
worker.addEventListener('message', function(e){
replies += 1;
});
只完成了 10 个请求,这是因为 UI 线程在所有请求返回之前就停止了,还是我还缺少其他东西?