gpt4 book ai didi

javascript - 德诺: "Classic workers are not supported"?

转载 作者:行者123 更新时间:2023-12-02 18:32:12 27 4
gpt4 key购买 nike

我想像这样创建一个 Web Worker:

const blob = URL.createObjectURL(new Blob([`
...
`], {type: 'text/javascript'}))
const worker = new Worker(blob)

但是在 Deno 中这样做时我得到:

error: Uncaught NotSupported: Classic workers are not supported.
const worker = new Worker(blob)
^

我在谷歌上搜索了这条消息“不支持经典 worker ”,我基本上没有发现任何解释其背后的历史或具体含义的信息。我发现了一些关于创建 worker 的特殊 Deno 方法:

const worker = new Worker(new URL("worker.js", import.meta.url).href, {
type: "module",
deno: true,
});
worker.postMessage({ filename: "./log.txt" });

但它似乎不能满足我的需求,因为我特别需要从字符串(或至少从运行时传递的任意函数)动态初始化工作程序。

有什么方法可以在 Deno 中完成我需要做的事情吗?

编辑:我确实设法在文档中找到了这个页面(出于某种原因,Deno 的文档在搜索引擎中无法找到结果),尽管这不是个好兆头,因为听起来没有办法做我想做的事我需要做 https://deno.land/manual/runtime/web_platform_apis#web-worker-api

最佳答案

Deno 目前不支持“经典​​”worker。

  1. 来自 Worker() - Web APIs | MDN :

    type: A DOMString specifying the type of worker to create. The value can be classic or module. If not specified, the default used is classic.

  2. 来自 Workers | Manual | Deno :

    Currently Deno supports only module type workers; thus it's essential to pass the type: "module" option when creating a new worker.

对于您的用例,您可以使用 data URL .例如:

new Worker(
`data:text/javascript;base64,${btoa(
`console.log("hello world"); self.close();`
)}`,
{ type: "module" }
);

关于javascript - 德诺: "Classic workers are not supported"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69276975/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com