angular - 在没有订阅的情况下运行 tap()

是否可以在不订阅的情况下运行 tap() 管道?

observer$:BehaviorSubject<number[]> = new BehaviorSubject<number[]>([1])
getData(page:number):void{
    of(page).pipe(
        tap({
            next: (data) => this.observer$.next([...this.observer$.value, data])  
        })
    )
}

我想要的是每次调用 getData(val) 时,observer$ 的 value 将由 [...observer$, val] 更新

回答1

在调用 subscribe 之前,observable 不会发出 values。但是,我看不出您需要创建然后点击一个可观察对象来做您想做的事情的原因。我会这样做:

observer$:BehaviorSubject<number[]> = new BehaviorSubject<number[]>([1])
getData(page:number):void {
   this.observer$.next([...this.observer$.value, page])
}

编辑:如果你想做一个 http 请求,你需要订阅它来发起请求:

getData(page: number): void {
  this.http.get('some url')
    .subscribe(data => {
      this.observer$.next([...this.observer$.value, data]);
    });
}

相似文章