Как использовать результат внутренней наблюдаемой при использовании селектора ngrx? - PullRequest
0 голосов
/ 23 октября 2019

В моем приложении в какой-то момент у меня есть следующий код:

  this.missionHelperService.checkMissionPoint(position).subscribe(result => {

  });

Теперь checkMissionPoint должен выполнить следующее =>

  1. - Получить значение изхранилище
  2. - выполнить вызов API
  3. - вернуть результат API

Я пытаюсь заставить его вернуть результат наблюдаемого, но я не могу 'Не удается найти правильный синтаксис

  checkMissionPoint(position: Cartographic): Observable<CheckMissionResponse> {
    const params = {
      latitude: CesiumMath.rad2Deg(position.latitude),
      longitude: CesiumMath.rad2Deg(position.longitude),
      altitude: position.height,
    };

    return this.store$.pipe(select(TransactionsStoreSelectors.selectedTransactionId), take(1)).pipe(
      map((tId) => {
        return this.httpClient.post<any>(`${environment.API_URL}/trajectories/${tId}/checkpoints`, params);
      })
    )
  }

Как я могу это сделать?

1 Ответ

3 голосов
/ 23 октября 2019

Вы можете попробовать switchMap, так как вы возвращаете новую наблюдаемую:

checkMissionPoint(position: Cartographic): Observable<CheckMissionResponse> {
  const params = {
    latitude: CesiumMath.rad2Deg(position.latitude),
    longitude: CesiumMath.rad2Deg(position.longitude),
    altitude: position.height,
  };

  return this.store$.pipe(
    select(TransactionsStoreSelectors.selectedTransactionId), 
    take(1),
    switchMap((tId) => {
      return this.httpClient.post<any>(`${environment.API_URL}/trajectories/${tId}/checkpoints`, params);
    })
  );
}
...