Web Workers - 如何导入模块

Kay*_*ote 25 javascript import module web-worker ecmascript-6

我正在使用ES2015导入/导出模块.

在我的工作文件中,当我尝试导入像我通常那样的函数时:

worker.js

import { a, b, c } from "./abc.js";
Run Code Online (Sandbox Code Playgroud)

我收到错误: SyntaxError: import declarations may only appear at top level of a module

当我在我的模块'abc.js'中导出函数时,我不知道如何使用旧的(显然在它的出路)语法中使用它们:

self.importScripts( "/app/abc.js" );
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,我们如何使用新的导入模块语法与工人?

第二个问题是,importScripts从某个模块导入时导入的内容是什么?没有导出全局对象父项?

Tob*_*hor 23

任何浏览器都不支持工作中的ES2015模块(否则甚至不支持模块).一旦他们这样做,你必须创建一个像这样的工人:

new Worker("worker.js", { type: "module" });
Run Code Online (Sandbox Code Playgroud)

请参阅:https://html.spec.whatwg.org/#module-worker-example

现在你必须使用importScripts().

这些是每个浏览器的错误报告:

  • 如何知道什么时候会得到支持? (3认同)

jak*_*b.g 11

2020:

Chrome 80 已于 2020 年 2 月推出模块工作器(Chrome 82 将为共享工作器提供模块)。Firefox/Safari 目前不支持这些功能:测试

您可能想使用import-from-worker lib 为您完成繁重的工作(目前,您需要检查对工作程序中模块的支持并自己进行回退)。