javascript - Web Workers 会对 ionic 应用程序有益吗?

标签 javascript angularjs performance ionic-framework web-worker

最近我遇到了 web workers,这是一种让你的脚本并行运行的方法。让您的脚本在后台运行而不“卡住”用户界面。当我发现这一点时,我想我已经找到了一种可以在我的 ionic 应用程序中实现的新技术,它应该会带来显着的用户体验性能改进。

但经过一番搜索,我几乎找不到任何文章谈论 ionic 中的 web worker。 Web Workers 不是什么新鲜事物,为什么在 ionic 甚至 Angular 中几乎没有提及它? ionic 不适合实现吗?或者,这是我忽略的其他事情?

最佳答案

Will web workers beneficial on ionic app?

这完全取决于您是否有一些繁重的处理可以卸载给网络 worker 。

As web workers isn't something very new, why there hardly any mention about it in ionic or even Angular?

因为 web workers 与 UI 框架无关,因为 web workers 中的代码不能直接操作浏览器的 UI(例如,不能操作 DOM,或者做 alert 、播放音频等)。所以 web worker 代码对 UI 框架库几乎没有用处,因为该库的工作主要是做 web worker 不能做的事情。相反,有一个主 UI 线程(页面的默认 JavaScript 线程)允许使用 DOM 等,因此有理由使用 UI 框架库。

详细信息:

最初,网络浏览器中的 JavaScript 在单线程上运行,同时更新 UI。这形成了一个没有并发问题的非常简单的模型,并且非常简单和成功。但它也有局限性:随着 JavaScript 开始用于越来越多的事情,一个 UI 线程在处理过程中陷入困境,浏览器不得不实现试探法来发出“慢脚本”警告等,因此用户不认为浏览器已经卡住了。

引入 Web workers 是为了让我们在浏览器托管的 JavaScript 中拥有线程,同时保持单个 UI 线程的强大简单性而没有并发问题(这也是它们不与其他线程共享全局数据区域的原因).它们让我们在其他线程中进行繁重的处理,但不允许让我们在这些线程中更新 UI。

这项工作可以间接与 UI 相关。例如,在现代浏览器上,可以发送某些类型的对象,称为 transferrable objects ,从主 UI 代码到 web worker 代码。 IIRC, Canvas 是可转让的。我们解决了并发问题,因为一旦您将一个可传输对象从一个线程发布到另一个线程,它就只能在目标中访问,而不能再在源中访问。因此,允许直接与 UI 交互的主 UI 线程可以获取某些东西(如 Canvas )并将其传输给 web worker 以对其执行某些操作(可能是转换),然后将其发回。但由于这项工作不涉及直接操作浏览器 UI(DOM 等),因此不太可能调用 UI 框架库。

关于javascript - Web Workers 会对 ionic 应用程序有益吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36531051/

相关文章:

javascript - 如何在代码中使用 For 循环?

javascript - 了解 ng-table 演示中的延迟排序示例

Android:ListView性能还是不够怎么办?

Android CalendarView 减慢布局

javascript - 想要在不增加或减少任何单个像素的情况下显示从 1680 到 980 分辨率的相似 View

javascript - JavaScript 过滤器助手中的精确字符串匹配未返回 true

javascript - 如何将元素与 ng-repeat 分开以链接到另一个 url?

javascript - 如何在 angularjs 中使用 ng-repeat 显示集合

php - Angularjs 不断给出 TypeError : Cannot read property 'dhx_security' of undefined

mysql - MySQL中的一个性能问题