gpt4 book ai didi

javascript - 我可以使用 Web Workers 做什么?

转载 作者:技术小花猫 更新时间:2023-10-29 12:08:25 24 4
gpt4 key购买 nike

我有几个关于网络 worker 的问题

  • 工作人员是否可以访问存储空间? indexedDB/webSQL 和启动工作程序的文件的本地存储?

  • 我如何在 worker 中包含一个文件? 我有一个 functions.js,它有很多快速应用程序相关的功能,它真的没有意义将文件的内容复制粘贴到一个工作人员中,只是为了让两个不同的地方更新我的功能。

  • 我可以在 worker 中使用 DOM 吗? 例如在临时音频标签中加载音频文件以读取其持续时间以及是否可播放。不访问父页面的 dom,但在 worker 本身有一个 DOM。

  • 如果任何问题的答案是否定的,那么如何/应该手动完成?

这是一个 chrome 应用程序,所以我可以访问最新的 Chrome API,我不需要关心向后兼容性。

最佳答案

Web Worker 没有任何类型的 DOM 访问 - 句号。所有 DOM 操作都必须从主 JS 线程完成。 Web Workers 只能通过消息传递与主线程通信。

previous SO question告诉您网络 worker 无法访问本地存储,这很容易通过 Google 搜索找到。

同一个线程有一个网络 worker 可以访问的列表。

不清楚“在工作程序中包含一个文件”是什么意思。您可以导入脚本。我不知道你还问什么。如果这对您处理音频文件有帮助,您可以使用 ajax 调用来获取数据。

在我看来,这听起来像是您需要对网络 worker 可以做什么和不能做什么进行一些基础研究(因为网络上有很多关于它的文章),然后再回来提出更多具体问题包含这些知识。

没有针对 Web worker 的黑客可以让您做的比您应该做的更多。

您可以在主 JS 线程中工作,如果您有很多工作要做并且希望保持主 UI 尽可能响应,则使用 setTimeout 分小块进行。这是一个非常古老的设计模式,可以追溯到线程可用或易于使用之前的日子。它涉及设计您的工作,以便可以将状态存储在某个持久对象中的小块中完成,然后您可以重复进行少量工作然后返回,只在下一个计时器滴答时拾取下一个工作.

关于javascript - 我可以使用 Web Workers 做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7495227/

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