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

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

问题描述:

我怎么能实现这一点:我有一些可能长的计算(例如,巨大的JSON解析为http响应),并希望以非阻塞的方式执行。我试着采用multithread.js lib来做web worker的后台工作。这个库需要JSON序列化对象传递给不知道闭包,DOM或其​​他全局变量的执行函数。 例如。 MT.process(longRunningJob, doneCallback)(jsonSerializableArgForBGJob)。 但这个lib是相当古老的(3年前的最后一次提交)。有没有更适合angular2的更好的选择?我需要针对最广泛的浏览器,包括较老的浏览器(IE/Edge除外),因此使用它的服务工作者或lib可能不是一种选择。angular2在自定义可序列化对象的后台线程中工作

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

看看在vkThread插件或在其角版本ng-vkThread

有了这个插件,你可以直接在一个线程,进程下载数据,并在UI返回结果。

doc and live demo为vkThread

doc and live demo为NG-vkThread

请让我知道如果您有任何问题。

+0

我已经尝试过你的lib,但我有麻烦传递自定义对象使用继承和多态性.. –

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

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

我想如果你想以非阻塞的方式处理数据,目前没有其他的方法可以自己用WebWorkers实现它。

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