javascript - angular2 在具有自定义可序列化对象的后台线程中工作

标签 javascript angular typescript web-worker

我如何实现这一点:我有一些可能很长的计算(例如,巨大的 JSON 解析为 http resp.)并且想以非阻塞的方式进行。

我试着领养multithread.js lib 使用 web worker 做后台工作。这个库需要 JSON 可序列化对象传递给执行函数,它不知道闭包、DOM 或任何其他全局变量。 例如。 MT.process(longRunningJob, doneCallback)(jsonSerializableArgForBGJob)。 但是这个库很旧(3 年前最后一次提交)。有没有更好的替代品更适合angular2?我需要针对最广泛的浏览器,包括较旧的浏览器(IE/Edge 除外),因此使用它的 service worker 或 lib 可能不是一个选项。

为了序列化,我找到了这个 cerialize lib 通过装饰它们的 Prop 来序列化自定义对象。这实际上可行,但它添加了相当多的代码并且似乎容易出错。我的另一个担心是我使用继承和多态性,不确定库是否已准备好用于此类 UC。人们会期望从 Java 中获知的机制:可序列化接口(interface)和覆盖的序列化/反序列化方法。有没有办法在 typescript/angular2 中完成这个?

最佳答案

只要您的代码是异步的,JavaScript 就是单线程和异步的。这意味着如果您的代码正在阻塞(长时间运行的循环),那么您正在阻塞要执行的其他代码。

RxJS 不使用 WebWorkers,因此您所做的一切都会阻塞执行线程。

我认为如果你想以非阻塞的方式处理数据,目前除了自己使用 WebWorkers 实现之外别无他法。

另请注意,异步并不意味着并行。

关于javascript - angular2 在具有自定义可序列化对象的后台线程中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40488724/

相关文章:

javascript - ng-template 中的组件初始化

angular - 使用 *ngFor 自定义模板渲染

angular - RxJs subject.subscribe 方法未按预期工作

javascript - 通过 js/jquery 重定向 url 函数传递 php 变量

javascript - 自动换行 :break-word alternative?

javascript - Angular - Controller 中的自定义验证器函数 : How to access 'this' ?

typescript - 使用 TypeScript 类型系统创建一个流畅的、有状态的构建器

javascript - 如何将 knockout 中的数据绑定(bind)到没有名称的数组

javascript - Angular : Get the index of the dropdown item

typescript - Swagger 的 bool 值作为字符串而不是 NestJS 中的 bool 值发送