6

我正在使用 JavaScript、HTML5 和 AngularJS 编写应用程序。它只需要在最近的浏览器上工作(例如,IE10 但不是 IE9)。

在应用程序的几个地方,都会有计算密集型任务,例如 XML 解析、base64 解码;这些可能涉及相当大的数据(几MB当然是可能的)。

atob()如果我只调用or之类的东西DOMParser.parseFromString(),我会在几秒钟甚至几分钟内得到一个无响应的浏览器。这显然是用户不能接受的。

我使用 Angular 的 Q 服务来实现异步访问外部 Web 服务等操作,因此避免在等待响应时挂起浏览器。但是这样的操作已经有了异步 API。

这些没有自己的异步 API 的计算密集型任务呢?

我可以将其中一些任务拆分一下,链接承诺。这有帮助吗?浏览器消息队列是否在每个任务结束时旋转?

我看到了“Web Workers”的存在,它似乎提供了适当的多线程。但是他们似乎在将对象传输到/从工作线程中的能力相当差。当然,对于像我这样来自 C#.Net 的人来说似乎就是这样!例如,我想将 Angular 服务(内置的和我自己的)注入线程上的任务中。而且我也不想在线程之间复制大量数据。

其他人是否正在实现包含严肃计算的响应式客户端 Web 应用程序?如果是这样,他们用什么来实现这一目标?

4

1 回答 1

3

听起来您正在寻找Parallel.js 库

以下是他们网站上对该库的简要说明:

“Parallel.js 是一个用于 Javascript 中的多核处理的小型库。它的创建是为了充分利用不断成熟的 web-workers API。”

我目前不知道任何特定于 Angular 中使用 Parallel.js 的示例,但我确信将库集成为 Angular 服务不会太难。

于 2014-12-15T15:54:38.967 回答