我正在尝试使用importSctipts从Web worker导入json数据,发生以下错误。
Uncaught NetworkError:无法执行' importScripts' on' WorkerGlobalScope':脚本(我的:从服务器获取数据的URL)无法加载。
Web worker代码在这里。我能够从我的web工作线程和主js线程发送基本消息。我想从我的服务器从Web工作线程中获取jsonp数据,然后回复主js线程。
/*web worker js file to fetch json data from server and then return to main javascript thread*/
self.onmessage = function(e)
{
var curr = setInterval(function()
{
var message = e.data;
fetchMyTournament(message);
}, 10000);
}
function fetchMyTournament(userid)
{
self.postMessage('worker saying hi');
var url = "(server URL mapping)?callback=processInfo&type=(typeOfArgument)&userId="+userid;
importScripts(url);
self.postMessage("After import script");
}
function processInfo(objJSON)
{
self.postMessage("Data returned from the server...: "
+ JSON.stringify(objJSON));
}
答案 0 :(得分:0)
importScript()必须放在函数之外。 对于您的情况,您应该使用fetch(url)。 您还应该向每个函数添加异步,并以这种方式使用它:
{{1}}
答案 1 :(得分:0)
对于我来说,我是这样导入PouchDB的:
importScripts("//cdn.jsdelivr.net/pouchdb/5.3.1/pouchdb.min.js");
网址应以正确的http / https开头。
因此,更改为此解决了问题:
importScripts("https://cdn.jsdelivr.net/pouchdb/5.3.1/pouchdb.min.js");