Javascript angular2使用自定义可序列化对象在后台线程中工作

Javascript angular2使用自定义可序列化对象在后台线程中工作,javascript,angular,typescript,web-worker,Javascript,Angular,Typescript,Web Worker,我如何做到这一点:我有一些潜在的长计算(例如,巨大的JSON解析为http响应),并希望以一种非阻塞的方式完成它 我尝试采用lib来使用webworker做后台工作。这个库需要JSON可序列化对象传递给执行函数,而执行函数不知道闭包、DOM或任何其他全局变量。 例如,MT.process(longRunningJob,doneCallback)(jsonSerializableArgForBGJob)。 但这个lib相当旧(3年前的最后一次提交)。是否有更好的选择更适合angular2?我需要针

我如何做到这一点:我有一些潜在的长计算(例如,巨大的JSON解析为http响应),并希望以一种非阻塞的方式完成它

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


对于序列化,我发现这个库通过装饰自定义对象的道具来序列化它们。这实际上可以工作,但它添加了大量代码,而且似乎容易出错。我的另一个担忧是我使用了继承和多态性,不确定lib是否适合这种UC。人们会期望Java中已知的机制:Serializable接口和重写的序列化/反序列化方法。有没有办法在typescript/angular2中实现这一点?

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

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

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


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

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

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

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

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