我将此代码放在与webpack 3捆绑在一起的Web文件中:
let _worker = new Worker("x.js")
_worker.addEventListener('message', (event) => {
resolve(event.data as any)
});
无论我传递给构造函数的路径是什么,工作者创建总是成功的。这怎么可能?
答案 0 :(得分:0)
这怎么可能?
因为它是异步。您不希望主JavaScript线程处于静止状态,阻塞,等待浏览器从服务器获取脚本文件。所以它是异步完成的。
如果您收听工作人员的error
事件,您将收到使用无效路径创建的工作人员的事件。
在标记为的步骤列表中涵盖in the spec。当调用Worker(scriptURL)构造函数时,用户代理必须运行以下步骤:“未列出有关浏览器获取URL的任何信息。
最后一步是run a worker,其开头如下:
- 创建一个单独的并行执行环境(即一个单独的线程或进程或等效的构造),并在该上下文中运行其余的这些步骤。
醇>...
请求请求为其网址为url的新请求...
让响应成为获取请求的结果。
- 醇>
如果响应响应状态为ok状态...
否则,对于与worker全局作用域关联的每个Worker或SharedWorker对象,将任务排队以在该对象上触发名为
error
的简单事件。中止这些步骤。