关于rxjs里operators filter和map的详细讨论

时间:2022-07-25
本文章向大家介绍关于rxjs里operators filter和map的详细讨论,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

看这段代码:

product$: Observable = this.currentProductService.getProduct().pipe(this.jerryfilter);

pipe接受一个参数,类型为OperatorFunction<Product, Product>, 这个类型是一个函数,

接收的类型参数为Product,Product,返回类型仍然为Observable:

因此定义一个函数jerryfilter,类型就为OperatorFunction<Product, Product>:

jerry2的实现,一个一元函数,返回类型boolean:

  jerrytest2(product: Product): boolean {
    const result = !!product;
    if (result === false) {
      console.log('false!');
    }
    return result;
  }

同样,pipe还可以传一个map操作进去,该map操作实现的函数接收的类型参数为Product和string,即将product数据映射成string,再用Observable包裹:

可以用这种精炼的箭头函数表示法:

jerrymap: OperatorFunction<Product, string> =
    map(product => product.name);

也可以用自己实现的函数替代product => product.name: