Событие подписки с бесконечным циклом RxJS - PullRequest
0 голосов
/ 07 октября 2019

Я столкнулся с проблемой: когда пользователь нажимает кнопку - запускается событие (пункт изменения курса). Но у меня есть нежелательные циклы (бесконечные) для этого события. На мероприятие есть подписка, и я думаю, что проблемы с ним.

Мой ngOnInit

    private click$ = new Subject<any>();

    ngOnInit() {

       this.subscription.add(this.movieUserRateService.searchRates({ movieId: [this.movieId] }).subscribe());

       this.click$
        .pipe(switchMap((rate) => this.movieUserRateService.getCalculateRate(this.movieId)))
         .subscribe(rate => {
           this.rateValue = rate;
           this.setRate();
         });

   }

onChange func

onChange(event) {
    const rateObj = { value: event.value, movieId: this.movieId };
    this.click$.next(rateObj);
  }

setRate func

  setRate() {
    console.log('setRate');
    this.myRating.setValue(this.rateValue);
  }

Я попробовал другой способ:

 onChange(event) {

    const rateObj = { value: event.value, movieId: this.movieId };
    const subscription = this.movieUserRateService.saveRate(rateObj)
          .pipe(
            switchMap((rate) => this.movieUserRateService.getCalculateRate(this.movieId))
          )
          .subscribe(rate => {
            this.rateValue = rate;
            this.setRate();
            subscription.unsubscribe()
          });

}

Если я не использую this.setRate (); - Бесконечный цикл исчезает. Но мне нужно использовать setRate (для мониторинга рейтинга изменений).

Что я делаю не так?

...