我正在使用带有pouchdb的角度5。当我保存用户时,我需要立即在用户列表中显示它。同时,后台线程必须对用户城市进行地理定位并更新其用户的坐标。
地理定位计算需要一两秒才能加载,这就是我想在后台线程中运行的原因。
我查看了angular service worker,但我认为这是为了让文件脱机。
我也看了angular cli web worker,但它没有提到如何调用后台服务并将值返回给主线程。
是否有明确的方法在角度5中运行后台线程?
答案 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));
这不是真正的多线程(在我看来,在这种情况下不需要),因为你需要更多地了解网络工作者。
答案 1 :(得分:0)
对于Aangular 5或以下版本,我正在使用setTimout()
var _setTimeoutHandler = setTimout(() => { myfunction(){}})
请确保在退出之前清除变量_setTimeoutHandler以避免资源泄漏 我也在寻找更好的方法。