1

私のコード:

    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');
      }
    });
  }
}

現在 - 外側のオブザーバブルがエラーを返した場合、内側のオブザーバブルは呼び出されません (返されません)。

4

1 に答える 1