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

javascript - 我可以在 Firefox 网络工作者中使用 Javascript 1.7+ 迭代器和生成器吗?

或者我如何告诉 Firefox 使用 mimetype 解析 web worker 扩展application/javascript;version=1.7

Firefox 4 Beta 9 中的 Firebug 1.7a9 提供:

当它无法识别常规脚本标签中的生成器 yield 关键字时,它就是这么说的。

0 投票
1 回答
1913 浏览

javascript - Node.js 下载并执行外部脚本

我正在使用 Node.js 构建一个简单的 http 客户端。

我想知道如何执行从 Web 服务器下载的 JS 脚本(模仿浏览器):我的 JS 代码 - 已经在 FF3.6 上测试过 - 包含 Web Workers 和 XMLHttpRequest Level 2。

Node.js 是否能够处理此类代码?

0 投票
27 回答
101971 浏览

javascript - 没有单独的 Javascript 文件的网络工作者?

据我所知,网络工作者需要写在一个单独的 JavaScript 文件中,并像这样调用:

我正在使用闭包编译器来组合和缩小我所有的 JavaScript 源代码,我宁愿不必将我的工作人员放在单独的文件中进行分发。有没有办法做到这一点?

鉴于一流的函数对 JavaScript 至关重要,为什么执行后台工作的标准方法必须从 Web 服务器加载整个其他 JavaScript 文件?

0 投票
5 回答
238 浏览

php - PHP/浏览器性能:由浏览器生成缩略图

用户将大分辨率图像上传到服务器。需要为此图像创建缩略图。我考虑过在 PHP 中创建缩略图而不是使用 GD 密集型操作,这个过程实际上可以卸载到客户端/浏览器吗?现在的现代浏览器支持快速缩小图像,但我确信做这样的任务有很多缺点和优点,所以我的问题是......

  1. 这将是一种更有效的方法,但是在服务器端比 GD 操作更有效吗?
  2. 是否有任何Javascript 库可以快速将图像保存为 JPG格式,以便可以通过 Ajax 将其发送到服务器?
  3. 作为一般说明,转换将使用 Web Workers完成,因此不会影响用户浏览器。
  4. 显然,用户可以潜在地利用并发送与全尺寸图像完全无关的缩略图。有什么好的方法可以解决这个问题,即快速计算缩略图和全尺寸图像的相似程度,如果它们相似,即 98%,那么允许图像?

我知道可能有更好的方法可以做到这一点,例如完全卸载到另一台服务器,或者例如在凌晨 3 点做批处理工作,但出于学术/信息目的,随着现代浏览器及其改进的 Javascript 引擎的出现,可以工作像这样放在客户端浏览器上?

0 投票
1 回答
245 浏览

javascript - 嵌套 SharedWorkers

是否有可能(即使不明智)在另一个 SharedWorker 的处理程序中实例化一个 SharedWorker?

0 投票
2 回答
2107 浏览

javascript - JavaScript:Web Worker 和类型化数组

我有一个网络工作者(以 开头new Worker())进行一些处理并且应该返回一个Float32Array.
然而,似乎在 workerpostMessage()获取数据之后,它会通过序列化和反序列化到 JSON,而我在收到消息时最终得到的是一个普通的 javascript Array(具有原始类型化数组所具有的所有属性)

一个简单的解决方法是从 javascript 数组重新创建类型化数组,但这很浪费并且占用时间和内存。

有一个更好的方法吗?某种方式告诉 JSON 反序列化实例化 aFloat32Array而不是 javascript 数组?或以其他方式传输二进制数据的方法?

0 投票
1 回答
178 浏览

javascript - WebWorkers 可以用来计算很长页面上的词频吗?

我正在编写一个基于浏览器(Javascript 和 jQuery)的语言分析工具,它从 HTML 中提取文本,然后提取句子、单词等语言单位。

为了导入文本,PHP 后端会抓取给定的 URL 并清理生成的 HTML。然后将该 HTML 插入到div#container界面中的 a 中,如下所示:

当源 HTML 页面很长时,我遇到了一些困难。将这样的页面读取并插入到界面DOM中似乎不会引起问题(尽管需要一段时间)。

但是如果页面很长,对蜘蛛内容运行词频算法会非常慢。例如,如果页面接近 100K 字,它几乎会让事情陷入停顿。

所以,我看到了一些选择:

  1. 更改 PHP 蜘蛛,使其截断源文档或将其细分为多个文档
  2. 更改词频算法,使其不那么精确,并对词分布进行采样而不是完整记录
  3. 试试这个新奇的 Web Worker,看看我是否可以跨多个后台进程分配计算。

在我看来,(3) 只是 Web Workers 旨在做的事情。我想象将蜘蛛内容分成块,然后为每个块分配一个 Web Worker。可以从 Web Worker 中返回每个 chunk 的词频概况,然后汇总并渲染到图表中。

在我尝试这个之前,我希望我能从这里其他可能曾经使用过 Web Workers 的人那里得到一个健全的检查。div#container一方面,我想知道是否有效地拆分div#container.

0 投票
2 回答
1814 浏览

javascript - Chrome 11 抱怨在 ECMAScript 5 严格模式下没有为 worker.js 定义 onmessage

我最近将我的所有项目都切换到了 ECMAScript 5 严格模式(即,"use stricts";在每个 JS 文件的顶部添加),但是以下 MDC 示例代码可以在除 Chrome 11 之外的任何地方使用。

https://developer.mozilla.org/en/Using_web_workers#The_JavaScript_code

web worker 中的代码会调用错误

Uncaught ReferenceError: onmessage is not defined.

我尝试将其var onmessage用作一种解决方法,它可以在 Chrome 11 中使用,但在 Firefox 4 中不起作用。无论如何我都不应该使用var,因为 AFAIKonmessage是一个全局变量,就像 一样window,重新定义它没有任何意义。

我应该怎么办?

0 投票
1 回答
927 浏览

html - 使用多个 postMessage 调用时 HTML5 Web Worker 错误“未捕获的 SyntaxError:没有足够的参数”

我有一个网络工作者,它发出大约 30 个 AJAX 请求,在每个请求之后,它使用 postMessage 向 UI 发送一条消息以记录进度。例如:

大约 10-20 次请求后(并不总是相同的数量),出现以下错误:

未捕获的 SyntaxError: 没有足够的参数

如果我删除 postMessage 调用,一切正常,如果我添加额外的 postMessage 调用,网络工作者会在更少的请求后给出错误。

它似乎还取决于数据的类型,如果 postMessage 调用包含 JSON 对象而不是字符串,则 web worker 会更快死亡。

有谁知道为什么会这样?

0 投票
1 回答
1741 浏览

concurrency - 如何在 Chrome 扩展程序中发出多个并行 Web html 请求?

我想在 Chrome 扩展程序中检索和解析多个 html 页面。

对每个请求使用 Web Worker 似乎是一种让它们并行执行的简单方法。那可能吗?我的尝试失败了,可能是因为它是一个已知的权限错误

作为一种解决方法,我想我可以让主扩展页面执行多个异步 XmlHttpRequest,然后让回调将结果页面发送到 Web Worker 以进行并行解析。但是这种方法提出了一个问题,Chrome 一次可以发出多少个异步并行请求?这个问题已经在这里问过了,没有答案。

我正在编写的 Chrome 扩展程序是一个浏览器操作。

工人代码: