Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript工作循环ajax_Javascript_Web Worker - Fatal编程技术网

javascript工作循环ajax

javascript工作循环ajax,javascript,web-worker,Javascript,Web Worker,我有一个工人,其中有一个URL数组。我循环遍历这些URL并抛出一个AJAX调用,但在AJAX的成功方法中,当我将消息发送回网站时,它总是发送最后一个请求 app.js var worker = new Worker('worker.js'); var urls = ['url1','url2','url3']; worker.addEventListener('message', function(e) { console.log('Worker: ', e.data.url); }, fa

我有一个工人,其中有一个URL数组。我循环遍历这些URL并抛出一个AJAX调用,但在AJAX的成功方法中,当我将消息发送回网站时,它总是发送最后一个请求

app.js

var worker = new Worker('worker.js');
var urls = ['url1','url2','url3'];
worker.addEventListener('message', function(e) {
  console.log('Worker: ', e.data.url);
}, false);

worker.postMessage({"args":[urls]});
self.addEventListener('message', function(e) {
    function load(url){
        var xmlhttp=new XMLHttpRequest();
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                console.log(xmlhttp);
                self.postMessage({'url':url});
            }
        }
        xmlhttp.open("GET",url,true);
        xmlhttp.send();
    }

    var urls = e.data.args[0];
    for(var i = 0; i<urls.length; i++){
        load(urls[i]);
    }
}, false);
worker.js

var worker = new Worker('worker.js');
var urls = ['url1','url2','url3'];
worker.addEventListener('message', function(e) {
  console.log('Worker: ', e.data.url);
}, false);

worker.postMessage({"args":[urls]});
self.addEventListener('message', function(e) {
    function load(url){
        var xmlhttp=new XMLHttpRequest();
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                console.log(xmlhttp);
                self.postMessage({'url':url});
            }
        }
        xmlhttp.open("GET",url,true);
        xmlhttp.send();
    }

    var urls = e.data.args[0];
    for(var i = 0; i<urls.length; i++){
        load(urls[i]);
    }
}, false);
self.addEventListener('message',函数(e){
函数加载(url){
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
log(xmlhttp);
self.postMessage({'url':url});
}
}
open(“GET”,url,true);
xmlhttp.send();
}
var url=e.data.args[0];

对于(var i=0;i来说,答案非常简单。第3行

var xmlhttp=new XMLHttpRequest();

您现在要做的是将xmlhttp设置为全局变量。这意味着每次执行第3行时都会覆盖该变量。

您确定吗?我认为您的问题已通过额外的变量解决。请确保清除所有缓存(Ctrl+F5);可能是加载了缓存的代码,或者是什么。或者可能是更详细地解释了你的问题。我做了,我得到了相同的输出,我想我需要实现承诺。亲爱的投票人,请在投票前添加评论。至少我会从中吸取教训,下次如果这个问题值得投票,我不会再重复。我完全同意.我觉得有意思解决的问题经常被否决。通常我认为这是懒惰和懦弱。