0

有什么方法可以在 web worker 中调用 ajax 函数。实际上我是直接使用 ajax 函数来获取响应,但是数据太重,因为我的窗口将被冻结直到响应到来。克服这个问题现在我正在使用网络工作者。数据(JSON)是动态的。所以你能告诉我如何调用 ajax 函数,以便我可以在我的应用程序中使用它。这里我附上网络工作者代码。

//Worker.js 文件

var myCallback = function(data){
    self.postMessage(JSON.stringify(data));
};

self.addEventListener('message', function(e) {
    importScripts('json.js?callback=myCallback');
}, false);

//JOSN.js 文件

function getResult(){
     var randomNum = (Math.floor(Math.random() * 5) + 1),
     cacheBuster = (Math.floor(Math.random() * 10000) + 1);
    $.ajax({url:'http://examples.kevinchisholm.com/utils/json/jsonp.php?callback=myCallback&cacheBuster=' + cacheBuster + '&sleep=' + randomNum,
        type:'POST',cache:false,data:datas,dataType:"json",async:false,
        success:function(xmlResponse){ 
        return xmlResponse;
    }});    
}

getResult();
4

1 回答 1

1

是的,您绝对可以通过简单地使用 XML Http Request 或 fetch API 在 Web Worker 中使用 ajax,并且可以postmessage使用我的代码发布消息希望它有所帮助:->

#声明工人

var worker= new Worker("ajax123.js");
worker.onmessage=function(data){                                        
    document.body.innerHTML=data.data;                                
}
 

#Web 工作者代码

fetch(filename)
    .then(response => { return response.text(); })
    .then(data => { self.postMessage(data) });
于 2021-09-12T16:16:04.503 回答