简体   繁体   中英

Can a script imported by a Web-Worker in turn import another script?

The pattern for a script used by a webworker https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers is:

  • webworker.js

     importScripts('./parent.js')
  • parent.js

     import { PerfManager} from "./child.js";

The child.js import results in:

Uncaught SyntaxError: Cannot use import statement outside a module

Is there any way to implement an import within the parent.js when used by webworker.js ?

You can start a module Worker (currently only available in Blink based browsers).

const worker = new Worker("worker.js", { type: "module" });

Then instead of importScripts you will directly import parent.js from this worker script, which will in turn be able to import whatever dependency.

Since StackSnippets are in null-origined iframes, I have to outsource the demo to this plnkr .


Note that in these browsers you could even use the dynamic import() statement from parent.js even in a non module Worker: plnkr , but this still wouldn't work in browsers that don't support module Workers .
For these you need to use only non module scripts and to use importScripts and its globals all along the chain: plnkr .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM