问题标签 [web-worker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4159 浏览

java - 使用 GWT 的 Web Worker

使用 GWT 模块加载 Web-Worker 线程的最简单方法是什么?

我不是指在 GWT 中获得对 Web-Worker 的支持(有相关库),而是如何生成 GWT 模块以加载到 Web-Worker 中?

我怀疑我需要一个特殊的链接器 - 有没有可用的地方?

0 投票
2 回答
779 浏览

javascript - 网络工作者委派(子工作者)不工作

我似乎无法从http://www.whatwg.org/specs/web-apps/current-work/complete/workers.html#delegation获得 Web Worker 委托示例以在 Chrome、Firefox 或 Safari 上工作。Web Inspector/firebug 控制台是静默的。

那是怎么回事?

0 投票
1 回答
398 浏览

jquery - jQuery 自定义 ajax 构建

我试图从 jQuery 中剥离除 ajax 功能之外的所有内容。抱歉这个愚蠢的问题,但请听我说:

  • 我正在使用网络工作者进行 ajax 调用,所以我不能在其中包含 core.js 的东西。
  • 我正在使用的另一个库调用 jQuery,但我无法让它与 jQuery.Hive.Pollen 库一起使用。经过数小时的故障排除后,这个 ChemDoodle Web 组件库似乎只适用于 jQuery,我没有足够的经验知道原因。
  • 使用 makefile 构建 jQuery 似乎很容易,但我不确定要包含什么。在 makefile 中,我取出了除了 ajax 相关的东西之外的所有东西:

.

但是,进一步检查 /ajax 源文件会显示调用“文档”的方法。所以这意味着无论我剥离多少个模块,这根本不起作用?

更新:关于 jQuery 的错误问题 #9889 似乎表明核心永远不会提供 Web 工作者可用的 ajax 函数,至少不会很快。

对我正在尝试做的事情以及为什么我需要使用网络工作者的一些描述,供任何感兴趣的人参考。我正在放置一个分布式计算应用程序,该应用程序从化合物数据库中进行一些分子模拟/筛选。普通的 javascript 不起作用,因为它会减慢页面速度,我希望应用程序在浏览器中连续运行,一个接一个地计算一个分子。这是我想要的网络工作者的伪代码大纲

是的,我可以实现我的程序来反序列化从主页传递的数据字符串并让页面获取 ajax 数据,就像这样

我想这可能可行,但它有点俗气,可能比让工人做所有事情要慢。根据 Rick Waldron 的说法,“如果您有一个正在轮询的系统,例如打开一个工作人员,永远在循环中发出 xhr 请求,在每次响应时, postMessage() 将结果返回给客户端,那么您就可以受益”

我想我会永远循环发出 xhr 请求,所以这个应用程序会很有用。

我确实找到了 jQuery.Hive.pollen.js,但它不能与我的其他库一起使用,这使得我需要进行 ajax 调用。虽然这是一个单独的问题(实际上是我的主要问题),所以如果有人对此感兴趣,请点击该帖子的链接:

0 投票
1 回答
240 浏览

ajax - ChemDoodle Ajax 与 Pollen.js 不兼容

我正在尝试使用来自 html5 网络工作者的 iChemLabs 云服务。通常,云服务需要 jQuery,但我无法将其导入网络工作者,因此我使用 Pollen 代替 ChemDoodle Web 组件库,我已经使用该库剥离了与文档相关的内容。

jQuery.Hive.Pollen 提供了一个很好的 ajax 函数,与 jQuery 非常相似,但我似乎根本无法让它工作。考虑到需要设置访问控制标头以允许你们中的任何人实际找到解决方案,我知道这个问题将很难解决。然而,我是一个初级 javascript 程序员,我想知道我两周的挫败感是否真的是一个很小的差异。我正在尝试调用以下函数:

这是我正在使用的库代码的链接,请参阅“q.ajax”调用并在该代码块中用 jQuery = q 替换 p = q(p 代表花粉)。

现在我只是想让 ajax 调用在一个普通的 javascript 块中工作,并计划稍后迁移到 web worker。

如果有人可以向我指出问题,我将非常感激。

0 投票
3 回答
3112 浏览

performance - 使用集群和 node-webworker 构建高性能 node.js 应用程序

我不是 node.js 大师,所以我想对此有更多的看法。

我正在创建一个 HTTP node.js Web 服务器,它不仅必须处理大量并发连接,而​​且还必须处理长时间运行的作业。默认情况下,node.js 在一个进程上运行,如果有一段代码需要很长时间才能执行任何后续连接,则必须等到代码结束它在前一个连接上所做的事情。

例如:

所以我正在考虑使用node-webworker库在单独的线程中运行所有长时间运行的作业:

为了让整个事情更高效,我还想使用集群为每个 CPU 核心创建一个新的节点进程。

通过这种方式,我希望通过不同的进程来平衡客户端连接cluster(如果我在四核上运行它,假设是 4 个节点进程),然后在单独的线程上执行长时间运行的作业node-webworker

这个配置有问题吗?

0 投票
1 回答
1729 浏览

javascript - 等到每个过程完成

我正在开发一个在 Web 浏览器中运行的 Javascript 模拟器。它有一个主循环:

对于每次迭代,我都需要运行几个必须同时执行的工作人员:

我的问题是:我怎么能等待每个工人完成?

0 投票
1 回答
4694 浏览

javascript - 使用 Web Worker(垃圾收集器)可能导致内存泄漏

我有一个应用程序在单击按钮后调用网络工作者。计算被移到工作人员以减轻 UI 并使其在计算时响应用户操作。

一切正常,大约 0.8-1.5 秒后,工作人员发送响应。在worker.onmessage我执行了所有需要的 DOM 操作之后,这个垃圾收集器出现并且实际上阻塞了 UI 2 秒或更长时间,具体取决于 CPU。这真的让我很困惑,因为 UI 阻塞是我想要阻止的。

这是时间线/内存控制台选项卡的屏幕截图:

如您所见,垃圾收集器事件发生在所有 DOM 操作之后。实际上只有一个重绘事件(DocumentFragment使用)。

主要js代码:

contactsorter.js(工人):

有没有办法避免在这个地方发生这些垃圾收集器事件?

UPD:在我看来,垃圾收集器事件的时间取决于发送给工作人员的数据量。
UPD2:关闭和启动垃圾收集器事件后仅发生两次,因此阻塞 UI 不到一秒钟。嗯?

0 投票
1 回答
853 浏览

gwt - 如何让网络工作者在 GWT 中工作?

我已经搜索和搜索,我在网上找不到任何明确的例子。我想尽可能轻松简单地做到这一点。谁能提供有关如何在 GWT 中使用网络工作者的信息?

0 投票
2 回答
7200 浏览

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

我有几个关于网络工作者的问题

  • 工人是否有权访问存储?例如 indexedDB/webSQL 和启动 worker 的文件的本地存储?

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

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

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

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

0 投票
2 回答
319 浏览

html - 这个 WebWorker 有什么问题(没有错误,但是没有到达 console.log)

我有以下代码,试图测试 WebWorkers。我有一个如下所示的 index.html 文件:

myworker.js(与 index.html 位于同一目录中)的内容是:

当我加载 index.html(在 Chrome 14 中)时,“创建后”console.log 永远不会发生。也没有别的。Console.logs 发生在 new Worker() 创建之前,但之后似乎什么都没有发生。