Angular2在后台线程中使用自定义的可序列化对象

angular2 work in background thread with custom serializable objects

本文关键字:自定义 序列化 对象 后台 线程 Angular2      更新时间:2023-09-26

我怎么能做到这一点:我有一些潜在的长计算(例如:巨大的JSON解析为http .),并希望以非阻塞的方式完成。

我尝试使用多线程.js库来使用web worker做后台工作。该库需要将JSON可序列化对象传递给执行函数,该函数不知道闭包、DOM或任何其他全局变量。如。MT.process(longRunningJob, doneCallback)(jsonSerializableArgForBGJob)。但是这个lib相当旧(3年前的最后一次提交)。有没有更好的替代品更适合于angular2?我需要针对最广泛的浏览器,包括旧的(除了IE/Edge),所以使用它的service worker或lib可能不是一个选择。

对于序列化,我找到了这个序列化库,通过装饰自定义对象的道具来序列化它们。这实际上可以工作,但它增加了相当多的代码,似乎容易出错。我的另一个担心是,我使用继承和多态性,不确定库是否准备好了这样的UC。人们会期望Java中已知的机制:可序列化的接口和覆盖的序列化/反序列化方法。有没有办法在typescript/angular2中实现这一点?

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

RxJS不使用WebWorkers,所以你所做的一切都是阻塞执行线程。

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

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