ada*_*wak 4 javascript geolocation rxjs typescript angular
我有这项服务:
getPosition(): Observable<Object> {
return Observable.create(observer => {
navigator.geolocation.watchPosition((pos: Position) => {
observer.next(pos);
observer.complete();
}),
() => {
console.log('Position is not available');
},
{
enableHighAccuracy: true
};
});
}
Run Code Online (Sandbox Code Playgroud)
我想这样使用它:
this.getLocationService.getPosition().subscribe((pos: Position) => {
self._latitude = pos.coords.latitude;
self._longitude = pos.coords.longitude; }
Run Code Online (Sandbox Code Playgroud)
但不幸的是它不起作用.我假设每次位置变化,纬度和长度都会改变.但它不起作用.
这里的一个问题与Observable合同有关
可观察合同
您可以在源文档和本网站页面中的不同位置看到的"可观察合同"是对Observable的正式定义的尝试,最初基于Microsoft的2010年文档Rx设计指南描述了它Rx.NET实现ReactiveX.本页概述了可观察合同.
通知
Run Code Online (Sandbox Code Playgroud)An Observable communicates with its observers with the following notifications:
- OnNext
将Observable发出的项目传达给观察者- OnCompleted
表示Observable已成功完成 ,并且它将不会发出更多项目- ...
因此,如果您想继续触发事件,则不应调用已完成
getPosition(): Observable<Object> {
return Observable.create(observer => {
navigator.geolocation.watchPosition((pos: Position) => {
observer.next(pos);
// simply call next again, but not complete
// until position is completed
//observer.complete();
}),
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
753 次 |
| 最近记录: |