【问题标题】:Uncaught NetworkError: Failed to execute 'importScripts' on 'WorkerGlobalScope'未捕获的 NetworkError:无法在“WorkerGlobalScope”上执行“importScripts”
【发布时间】:2014-06-22 07:45:44
【问题描述】:

我正在尝试使用 importSctipts 从 web worker 导入 json 数据,出现以下错误。

未捕获的网络错误:无法在“WorkerGlobalScope”上执行“importScripts”:(my:URL 以从服务器获取数据)处的脚本无法加载。

网络工作者代码在这里。我能够从我的网络工作线程和主 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));
} 

【问题讨论】:

  • 你知道这个错误发生了什么吗?

标签: javascript web-worker


【解决方案1】:

对于我来说,我是这样导入 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");

【讨论】:

    【解决方案2】:

    importScript() 必须放在函数之外。 对于您的情况,您应该使用 fetch(url)。 您还应该为每个函数添加异步,并以这种方式使用它:

    let message = fetchMyTournament(message).then(function(result){return result;});
    

    【讨论】:

      猜你喜欢
      • 2022-06-17
      • 2019-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 2020-07-05
      • 1970-01-01
      相关资源
      最近更新 更多