我是新手,我想我了解Observables,但是我不确定。
我有一个将过滤器应用于Ag-grid的代码。我想在将滤镜应用为gridApi.setRowData时显示叠加层 将过滤器应用于12,000多个记录需要很长时间。
最初,当我应用过滤器按钮时,我会调用一个应用过滤器的服务,然后使用 this.gridApi.setRowData
this.gridOptions.api.showLoadingOverlay();
this.gridApi.setRowData(this.filterService.applyGridFilters
(this.gridFilters, this.gridData));
this.gridOptions.api.hideOverlay();
此叠加层没有出现,并且在应用过滤器时我的UI冻结了,所以我认为我可以将applyFilter方法设置为可观察的方式,这样它将异步执行
所以我在服务中创建了这个可观察的
apply(gridFiltersList: GridFilter[], gridData:any[]): Observable<any[]>
{
let simpleObservable= new Observable<any[]>((observer) => {
// observable execution
observer.next(this.applyGridFilters(gridFiltersList, gridData));
//observer.complete()
});
return simpleObservable;
}
现在我正在使用订阅应用过滤器:
this.gridOptions.api.showLoadingOverlay();
this.filterService.apply(this.gridFilters, this.gridData).subscribe(data
=>{
this.gridApi.setRowData(data);
this.gridOptions.api.hideOverlay();
})
这仍然不起作用,我得到的结果与覆盖层不显示相同,并且在应用过滤器时UI冻结。我的印象是Observables将异步执行。
我在做什么错了?