RXJS отменяет подписку, когда доступно новое значение - PullRequest
2 голосов
/ 22 сентября 2019

Проблема: в настоящее время я использую наблюдаемое для запроса игровых данных из моего API.Он запрашивает это каждый раз, когда пользователь переключается с игры на игру, но если интернет-соединение пользователя слишком медленное, чтобы не отставать от быстрых изменений в игре, он отображает ранее запрошенные данные.

this.gamesService.selectedGame.subscribe((selectedGame) => {
  // Reset current value
  this.setRounds(null);

  // Fetch new game values
  if (selectedGame) {
    this.apiService.get(`Games/${selectedGame.IntGameID}`)
      .subscribe(
        data => this.setRounds(data)
      );
  }
});

gamesService.selectedGame выводит значениекаждый раз, когда пользователь переключается на другую игру.Я ищу способ отменить предыдущую «подписку» и использовать этот фрагмент кода только для самого актуального запроса.

1 Ответ

3 голосов
/ 22 сентября 2019

Как отметил JB nizet, мне действительно нужно было использовать оператор switchMap.Это привело к следующему коду.

this.gamesService.selectedGame.pipe(switchMap(
  (selectedGame) => {
    // Reset current value
    this.setRounds(null);

    // Fetch new game values
    return this.apiService.get(`Games/${selectedGame.IntGameID}`);
  })).subscribe(
    data => this.setRounds(data)
  );
...