如何获取 RxJS 主题的先前值?

How to get previous value of RxJS Subject?

在我的项目中,我需要将分页器的 pageSize 值(每页项目数)与之前的值进行比较,如果新值更高,那么我需要从存储中加载数据。但是,如果它不更高,我什么也不想做。

例如在这段代码中:

export class MyComponent {
  paginatorPageSize: BehaviorSubject<number> = new BehaviorSubject<number>(10);
  // ...

  savePageSettings() {
    this.pageService.save().pipe(
      map((result: any) => {
        // ...
      }),
      tap(() => this.anyCode.here()),
      switchMap((result: any) => {
        // ...
      }),
      switchMap(() => {
        const previousPageSize = ??? // <--- here how can I get the prevoius value of paginatorPageSize?

        if (previousPageSize >= this.paginatorPageSize.value) {
          return this.pageService.getAll();
        }

        return of(null)
      })
    ).subscribe();
  }
}

有什么方法可以获取 RxJS Subject / BehavioSubject 或任何类型的 subjects 之前发出的值吗?

只需使用 pairwise 运算符。

savePageSettings() {
    this.pageService.save().pipe(
      map((result: any) => {
        // ...
      }),
      tap(() => this.anyCode.here()),
      switchMap((result: any) => {
        // ...
      }),
      pairwise(),
      switchMap(([oldResult, newResult]) => {
        const previousPageSize = oldResult.pageSize;

        if (previousPageSize >= this.paginatorPageSize.value) {
          return this.pageService.getAll();
        }

        return of(null)
      })
    ).subscribe();
  }