问题标签 [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 投票
5 回答
20615 浏览

javascript - HTML5 中 Shared Worker 和 Worker 有什么区别?

阅读此博文后:http ://www.sitepoint.com/javascript-shared-web-workers-html5/

我不明白。aWorker和 a 和有什么不一样SharedWorker

0 投票
1 回答
432 浏览

internet-explorer - IE10 出来了,他们谈论“Web Workers”,它将网页中长时间运行的 JS 卸载到一个单独的工作程序中,谷歌浏览器有这个吗?

谷歌浏览器是否会像他们在 IE10 中描述的那样做?还是这里缺少 Chrome?还是不同?

0 投票
2 回答
1945 浏览

javascript - jQuery 的非 DOM 子集

我希望能够在 Web Worker 中使用 jQuery 中的许多实用方法,其中无法访问windowordocument对象。

具体来说,我希望能够使用 、 和整个系统之类$.extend()$.ajax()方法$.Deferred()。我显然不需要任何 DOM 遍历和操作方法,所以我不是在寻找像 JSDOM 这样的解决方案。

我可以自己提取 jQuery 的非 DOM 部分,但这很难维护。是否有任何可用的 jQuery 发行版或构建脚本来构建非 DOM 部分?

0 投票
1 回答
944 浏览

javascript - Web Worker 的无文档画布

有没有画布的实现document.createElement('canvas')

我想在网络工作者中使用画布,但我无法通过 将画布数据传递给它worker.postMessage(),因为画布是 HTMLElement。

另外我不想将画布的 ImageData 传递给网络工作者,因为我不想context2d.drawImage()手动实现。

0 投票
1 回答
1256 浏览

javascript - 使用 Web Worker 从文件中获取图像数据

是否可以从 Web Worker 中的文件中解码图像数据,以便我可以将其传递给主线程并使用 putImageData。这大概比只调用 drawImage 更快。

0 投票
1 回答
1397 浏览

multithreading - 为什么不允许 web worker 修改 dom

我知道web workers工作作为一个单独的线程而不是,UI thread但我不明白为什么不允许他们修改DOM. 我的意思是您可以允许线程间通信并将DOM数据保存在共享空间中并让web workers线程修改DOM. 为什么浏览器不允许这样做?

0 投票
1 回答
1567 浏览

html - 使用 Shared Worker 的 Chrome 内存泄漏?

SharedWorker我有一个启动 HTML5脚本的网页。每次重新加载此页面(按 F5)时,Chrome 内存使用量都会增加。

worker 脚本非常简单。每秒(使用setInterval)一条消息被发送到连接的端口。

每次我按 F5 时,似乎工作进程都会终止并重新启动。这是我所期望的,因为工作人员实际上并没有被多个“文档”共享。但是,我无法弄清楚为什么每次刷新时内存使用量都会增加。

有谁知道为什么会这样?

鉴于每次重新加载页面时内存都会增加,这让我认为我根本无法在 Chrome 中使用共享工作者。有没有人能够做到这一点而没有记忆问题?

更新

这是托管 HTML:

...这是worker.js

托管页面启动/连接到共享工作者并输出从它接收到的任何内容。

工作代码保存一个已连接端口的列表,并每秒向它们发送一条消息。

这是简单的东西。然而,每次在 Chrome 中重新加载托管页面时。该选项卡的内存有效负载增加。

下面显示了几次刷新后 Chrome 的内存使用情况:

刷新几次后,我达到了 100 MB

...再刷新一些后,我达到了 250 MB...

再次刷新后达到 250 MB

我的想法不多了,认为这一定是 Chrome 中的错误。谁能给我一些指针?

更新 2

禁用我的 AdBlock 扩展似乎可以解决问题:

在没有 AdBlock 的情况下运行

于是我高兴了一阵子,结果发现内存还是被泄露了。禁用 AdBlock 后,每次页面刷新的泄漏量要少得多。

0 投票
2 回答
3586 浏览

php - 将工作服务器与 php 应用程序一起使用的指南

我已经构建了一个 PHP 应用程序,并且我读到在调用 api 或执行耗时的操作时使用“worker”+ 队列服务器是最佳实践。

快速搜索教程已经枯竭。我已经使用 codeigniter 构建了我的应用程序,并且我确实对 facebook api 进行了各种调用 + 在整个应用程序中使用基于 php 的图像处理。我唯一想知道的是,如果我正在执行 api 调用或调整我的图像大小,并且用户通常不关心从我的服务器获得响应,直到它完成,队列服务器+worker 将如何帮助我。

什么情况下适合工作人员 + 队列服务器,是否有任何指南可以将这些内容包含在我的应用程序中?最近我在我的应用程序中包含了 memcache,这非常简单。我只是用 memcache 处理程序包装了我的 sql 查询。

0 投票
2 回答
22717 浏览

html - 网络工作者控制台.log

只是我,还是console.log()对 HTML5 网络工作者的要求太高了?

我知道操作 DOM 会被阻止,因为它有潜在的危险,但是真的有可能console.log()被多线程工作人员恶意利用吗?

0 投票
1 回答
397 浏览

javascript - JSON 对象变为“空”

我的 html5 网络工作者遇到了问题。web worker postMessage() 的 JSON 对象到调用 worker 的文档级 javascript,它带有 onmessage() 函数。

显然,可以访问“iterationsjob”键,因为工人可以处理相关的数字值,但这似乎只在谷歌浏览器中有效,它仍然会引发错误:

在 Firefox 中,网络工作者根本不工作,似乎也无法访问数字,我得到了成功的 ajax 调用,但它似乎绕过了日志记录步骤,并通过单独的 ajax 调用引发了另一个错误. 因此,我为工作人员编写了一种基本方法将 log() 消息返回到控制台,并从工作人员内部调用它们:

我希望看到以下内容:

相反,我看到:

任何人都可以解释问题是什么以及如何解决它?编辑:我在这里上传了源代码的 zip 。在 Google App Engine 上运行。

谢谢!非常感谢任何帮助。