私のコード:
return this.userService.getPosition().pipe(
switchMap(() => {
return this.get('/places', { point: this.userService.coords });
}),
);
位置を取得できない場合があります (Google Chrome に https がない、またはユーザーが許可されていない)。
この場合、私はまだ戻る必要がありますreturn this.get('/places', { point: this.userService.coords });
この呼び出しだけで、this.userService.coord
になりますnull
。
サービスコード:
export class UserService {
constructor() {}
coords: Coordinates;
getPosition(): Observable<any> {
return new Observable(observer => {
if (window.navigator && window.navigator.geolocation) {
window.navigator.geolocation.getCurrentPosition(
position => {
this.coords = [position.coords.latitude, position.coords.longitude];
observer.next(this.coords);
observer.complete();
},
error => observer.error(error),
);
} else {
this.coords = null;
observer.error('Unsupported Browser');
}
});
}
}
現在 - 外側のオブザーバブルがエラーを返した場合、内側のオブザーバブルは呼び出されません (返されません)。