CombineLatest Infinite Loop pluck运算符

注意:我正在具有ngFor的组件中调用set函数。因此,当我调用set函数时,ngOnInit被执行多次,因此set函数也将执行多次。 我有一个可观察的对象,并对其进行了更新以保持数据的一致性。

private app= this.subject.asObservable().distinctUntilChanged();

我使用此方法访问数据

select<T>(name: string): Observable<T> {
   return this.app.pluck(name);
}

当我在每个用户选择上更新此“应用”时,我将进入无限循环。因此,$ info开始反复打印相同的信息。然后,“ set”一遍又一遍地被调用。 我正在使用异步管道在html视图中进行订阅和取消订阅。有任何想法吗?

updateFruits(fruit) {
  this.app.set('Fruits',fruit);
}

set(name: string,state: any) {
  this.subject.next({ ...this.value,[name]: state });
}

   this.info$ = combineLatest(fruits$)
  .pipe(
      distinctUntilChanged(),debounceTime(0)
      map(fruits => fruits)
   );
iCMS 回答:CombineLatest Infinite Loop pluck运算符

我认为要使用pluckdistinctUntilChanged之类的运算符,就必须使用pipe

private app = this.subject.asObservable().pipe(distinctUntilChanged());

select<T>(name: string): Observable<T> {
   return this.app.pipe(pluck(name));
}

在该方法set之前我也从未见过可观察对象,只有next

-编辑

我知道,我以为this.app是可观察的。

我试图重现该错误,但一切似乎都很好: 希望能对您有所帮助:https://stackblitz.com/edit/rxjs-stack

本文链接:https://www.f2er.com/2188365.html

大家都在问