即使文件路径无效,web worker构造函数也不会失败

时间:2017-12-01 18:10:06

标签: javascript webpack web-worker

我将此代码放在与webpack 3捆绑在一起的Web文件中:

let _worker = new Worker("x.js")
_worker.addEventListener('message', (event) => {
    resolve(event.data as any)
});

无论我传递给构造函数的路径是什么,工作者创建总是成功的。这怎么可能?

1 个答案:

答案 0 :(得分:0)

  

这怎么可能?

因为它是异步。您不希望主JavaScript线程处于静止状态,阻塞,等待浏览器从服务器获取脚本文件。所以它是异步完成的。

如果您收听工作人员的error事件,您将收到使用无效路径创建的工作人员的事件。

在标记为的步骤列表中涵盖in the spec。当调用Worker(scriptURL)构造函数时,用户代理必须运行以下步骤:“未列出有关浏览器获取URL的任何信息。

最后一步是run a worker,其开头如下:

  
      
  1. 创建一个单独的并行执行环境(即一个单独的线程或进程或等效的构造),并在该上下文中运行其余的这些步骤。
  2.         

    ...

         
        
    1. 请求请求为其网址为url的新请求...

    2.   
    3. 让响应成为获取请求的结果。

    4.   
    5. 如果响应响应状态为ok状态...

           

      否则,对于与worker全局作用域关联的每个Worker或SharedWorker对象,将任务排队以在该对象上触发名为error的简单事件。中止这些步骤。

    6.