如何等待ngrx存储中的数据得到处理



我正在从组件中的ngrx存储中获取数据。在map函数中,我处理数据并准备将其显示在组件中。最终结果存储在对象中。该组件通过查询参数实现过滤器。我订阅激活的路由以获得当前的查询参数,然后过滤我的数据。当我试图访问进程中的对象时,我收到的却是空对象。如何从订阅查询参数的ngrx存储中获取处理后的结果?

events$: Observable<Event[]>;
eventsByDay = {}; // empty object for proccessed data
ngOnInit(): void {
this.events$ = this.store.pipe(
select(EventQuery.getAllEvents),
filter((events) => events.length > 0),
map((events: Event[]) => {
// some logic to proccess data from store
this.eventsByDay = { //proccessed data };
return events;
});

this.activatedRoute.queryParams.subscribe((queryParams) => {
console.log(this.eventsByDay); --> empty
});      
}

您可以使用combineLatest来等待,直到两个可观察器都发出一些东西:

import { combineLatest } from 'rxjs'
...
ngOnInit(): void {
this.events$ = this.store.pipe(
select(EventQuery.getAllEvents),
filter((events) => events.length > 0),
map((events: Event[]) => {
// some logic to proccess data from store
this.eventsByDay = { //proccessed data };
return events;
});
// don't forget to unsubscribe!
combineLatest([this.activatedRoute.queryParams, this.events$])
.subscribe(([query, events]) => {
console.log(events, query);
console.log(this.eventsByDay); // will be the same as events
});
}