角度5在背景中运行不同的线程

时间:2018-04-06 04:22:39

标签: multithreading angular

我正在使用带有pouchdb的角度5。当我保存用户时,我需要立即在用户列表中显示它。同时,后台线程必须对用户城市进行地理定位并更新其用户的坐标。

地理定位计算需要一两秒才能加载,这就是我想在后台线程中运行的原因。

我查看了angular service worker,但我认为这是为了让文件脱机。

我也看了angular cli web worker,但它没有提到如何调用后台服务并将值返回给主线程。

是否有明确的方法在角度5中运行后台线程?

2 个答案:

答案 0 :(得分:1)

使用rxjs,您可以定义并创建一个可以执行所需操作的observable:

    myObservable = Observable.create(function (observer) {
      if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(position => observer.next(position));
      }
    });

然后使用它来异步获取所需的值:

myObservable.subscribe(pushedValue => console.log(pushedValue));

Here is a running example

这不是真正的多线程(在我看来,在这种情况下不需要),因为你需要更多地了解网络工作者。

答案 1 :(得分:0)

对于Aangular 5或以下版本,我正在使用setTimout()

 var _setTimeoutHandler = setTimout(() => {  myfunction(){}})

请确保在退出之前清除变量_setTimeoutHandler以避免资源泄漏 我也在寻找更好的方法。