如何获取 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();
}
在我的项目中,我需要将分页器的 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();
}