【发布时间】:2017-02-27 14:47:55
【问题描述】:
我目前正在开发一个基于 NativeScript 和 Angular2 的 App。
当我的应用程序通过 HTTP 获取数据时,我的屏幕冻结了一段时间,我想将获取操作放到另一个线程中。
我在网上做了很多搜索,我得到的只是官方文档中的 javascript 代码 - https://docs.nativescript.org/angular/core-concepts/multithreading-model.html
有没有什么方法可以在“Typescript”中使用 WebWorker 实现多线程(其中包含对 Angular 注入 HTTP 服务的支持)而不是“Javascript”代码(来自官方文档的代码)
如果有人能给我一些指导或提示,我将不胜感激,如果我能得到一些相关的示例代码,那就太好了。 谢谢。
【问题讨论】:
-
在 TypeScript/Angular 中实现 web worker 应该与在 JavaScript 中实现它没有什么不同。现在,您是否应该考虑为 http 使用 webworker 完全是另一个话题。 Http 模块被实现为在另一个线程上工作,因此将其卸载到另一个线程不太可能带来很大的性能提升(如果有的话)。您获取的数据有多大?
-
感谢您让我知道 HTTP 模块在另一个线程上工作。获取的数据并不是很大(大约 5000 条 XML 格式的记录),然后我认为瓶颈应该是通过 HTTP 获取内容后的 XML 解组。我稍后会尝试看看它是否像我刚才提到的那样。
-
我发现瓶颈是对 nativescript-sqlite 模块的调用(github.com/NathanaelA/nativescript-sqlite)。所有数据库访问似乎都在导致阻塞的主线程上工作......
标签: javascript angular nativescript