Angular 当过滤器返回false时,RxJs返回旧值
此代码的主要目的是检查存储区中是否存在值,并防止向服务器发出额外请求。整个逻辑工作正常,但不幸的是,当过滤器返回false时,选择器并没有应用于observable,数组为空,即使存储了值Angular 当过滤器返回false时,RxJs返回旧值,angular,rxjs,ngrx,ngrx-store,Angular,Rxjs,Ngrx,Ngrx Store,此代码的主要目的是检查存储区中是否存在值,并防止向服务器发出额外请求。整个逻辑工作正常,但不幸的是,当过滤器返回false时,选择器并没有应用于observable,数组为空,即使存储了值 this.events$ = this.paginationService.page$.pipe( switchMap(pageIndex => this.store.pipe( delay(0), //get objects from store
this.events$ = this.paginationService.page$.pipe(
switchMap(pageIndex => this.store.pipe(
delay(0),
//get objects from store
select(selectEventsPageByGenre(this.musicGenre, { pageIndex: pageIndex, pageSize: 3 })),
//if there are no objects from select() the dispatch server request
filter(events => events.length === 0),
map(() => {
this.store.dispatch(new EventsPageRequested({
musicGenre: MusicGenre[this.musicGenre.toUpperCase()],
page: {
pageIndex: pageIndex,
pageSize: 6
}
}));
return [];
})
))
);
如果数组不为空,当筛选器返回false时,如何从选择器返回值
提前感谢只需移除过滤器,并用
map(() => {
if (events.length > 0) {
return events;
}
this.store.dispatch(new EventsPageRequested({
musicGenre: MusicGenre[this.musicGenre.toUpperCase()],
page: {
pageIndex: pageIndex,
pageSize: 6
}
}));
return [];
})