Почему удаление объекта BehaviourSubject приводит к задержке службы на 3-4 секунды? - PullRequest
0 голосов
/ 20 сентября 2019

Ранее я создал BehaviourSubject и, подписавшись на него, звонил в сервис.Но, из-за природы BehaviorSubject, при инициализации BehaviouSubject не было необходимости.Итак, при дальнейшем чтении я изменил BehaviourSubjedct на ReplaySubject(1).

Теперь, в основном классе @Injectable, где я определил службы, есть другая служба, которая является независимой, которая однажды задерживаетсяЯ сделал вышеуказанные изменения.Как определить причину проблемы здесь?

component.ts

constructor(private _subjectService: SubjectService, private _s1: Service1){
    this._s1.Call1();
    this.testFunction();
}

testFunction(){
this._subjectService.GetData().subscribe(res => {
      if (res !== null) {
         this._s1.Call2();  
     }
   }
}   

SubjectService

  // filterSubject = new BehaviorSubject(<KendoRequestVM>{});
  // filterDataSubject = new BehaviorSubject(<KendoRequestVM>{});

   filterSubject = new ReplaySubject<KendoRequestVM>(1);
   filterDataSubject = new ReplaySubject<KendoRequestVM>(1);

Здесь Call1 () вызывается, когда я используюBehaviouSubject вместо ReplaySubject.

1 Ответ

1 голос
/ 21 сентября 2019

Субъект поведения всегда возвращается немедленно (синхронно даже).Тема воспроизведения будет возвращена немедленно / синхронно, только если у нее есть значение.Невозможно определить это только с помощью кода, которым вы поделились, потому что вы не поделились частью, которая заполняет темы (например, вызывает next), но это кажется наиболее вероятным объяснением.

...