【问题标题】:Wait for filter to complete等待过滤器完成
【发布时间】:2018-06-20 19:27:17
【问题描述】:

是否可以等待过滤功能完成?

我在 Angular 6 中有这个 observable,在那里我做了一个过滤器。过滤器需要几秒钟,所以做一些功能会很好,当过滤器完成时。这可能吗?

flSearch(input) {
    return this._plantCache.pipe( // Use downloaded JSON file
            map(
              (res: Array<Object>) => {
                return res.filter(item => {
                  return item['Fl'].indexOf(fl) !== -1;
                });
              },
              error => {
                this.loadingHide();
                return error;
              })
            );
}

其他文件

this._data.flSearch(data.value.searchPlant)
            .subscribe(items => {
              console.log(items);
            });

【问题讨论】:

    标签: javascript angular typescript filter


    【解决方案1】:

    你可以让你的函数返回一个可观察的https://angular.io/guide/observables

    import {Observable} from 'rxjs/Observable';
    
    flSearch(input) {
        return new Observable ((observer) => {
          observer.next(this._plantCache.pipe( // Use downloaded JSON file
            map((res: Array<Object>) => {
              return res.filter(item => {
                return item['Fl'].indexOf(fl) !== -1;
              });
            }, error => {
              this.loadingHide();
              return error;
            })
          ));
        });
      }
    

    编辑observer.next() 用于返回值,observer.complete() 关闭 observable,这样它就不会在完成工作后耗尽内存。您必须导入 rxjs 才能访问可观察实例。

    【讨论】:

    • 我认为你很接近,但它不起作用。我收到此错误“[ts] Expected 1-2 arguments, but got 3. this: this”
    • 你能再试一次吗?
    • 我编辑了代码以获得过滤器变量。这可能会有所帮助,但是您在哪一行出现此错误?没有任何函数接受多个变量
    • 另外,我刚刚更新了括号/花括号。我想我错过了一两个。
    • 仍然得到相同的错误“[ts] Expected 1-2 arguments, but got 3. (parameter) res: Object[]”。一定是因为map函数只能有2个参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 2014-12-22
    • 2020-10-04
    • 2020-07-04
    相关资源
    最近更新 更多