Web-Worker 导入的脚本能否依次导入另一个脚本?
Can a script imported by a Web-Worker in turn import another script?
webworker https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers 使用的脚本模式是:
webworker.js
importScripts('./parent.js')
parent.js
import { PerfManager} from "./child.js";
child.js
导入结果:
Uncaught SyntaxError: Cannot use import statement outside a module
当 webworker.js
使用时,有什么方法可以在 parent.js
中实现导入吗?
您可以启动 module Worker(目前仅适用于基于 Blink 的浏览器)。
const worker = new Worker("worker.js", { type: "module" });
然后,您将直接从这个工作脚本 import
parent.js 而不是 importScripts
,这将能够导入任何内容依赖。
由于 StackSnippets 在 null-origined iframe 中,我必须将演示外包给这个 plnkr。
请注意,在这些浏览器中,您甚至可以在非模块 Worker 中使用来自 parent.js 的动态 import()
语句:plnkr , 但是 这在不支持模块 Workers.
的浏览器中仍然不起作用
对于这些,您只需要使用非模块脚本并在整个链中使用 importScripts
及其全局变量:plnkr.
webworker https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers 使用的脚本模式是:
webworker.js
importScripts('./parent.js')
parent.js
import { PerfManager} from "./child.js";
child.js
导入结果:
Uncaught SyntaxError: Cannot use import statement outside a module
当 webworker.js
使用时,有什么方法可以在 parent.js
中实现导入吗?
您可以启动 module Worker(目前仅适用于基于 Blink 的浏览器)。
const worker = new Worker("worker.js", { type: "module" });
然后,您将直接从这个工作脚本 import
parent.js 而不是 importScripts
,这将能够导入任何内容依赖。
由于 StackSnippets 在 null-origined iframe 中,我必须将演示外包给这个 plnkr。
请注意,在这些浏览器中,您甚至可以在非模块 Worker 中使用来自 parent.js 的动态 import()
语句:plnkr , 但是 这在不支持模块 Workers.
的浏览器中仍然不起作用
对于这些,您只需要使用非模块脚本并在整个链中使用 importScripts
及其全局变量:plnkr.