我的Observable无法异步执行

时间:2019-05-21 20:20:16

标签: angular observable ag-grid

我是新手,我想我了解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将异步执行。

我在做什么错了?

0 个答案:

没有答案