【问题标题】:What is exact difference between pipe and map in angular 7?角度7中的管道和地图之间的确切区别是什么?
【发布时间】:2019-06-04 23:12:03
【问题描述】:

我对此进行了很多搜索,但我无法在角度 7 中找到 pipemap 之间的区别? Angular 7的Service.ts文件中是否需要使用管道?

谢谢

【问题讨论】:

  • 不,您可以不使用管道继续。 Map 只是将您的 http observable 类型转换为您想要的输出
  • 我认为你的意思是 RxJS 而不是 Angular
  • 感谢您的回复,但我需要知道什么更好用。 http observables 使用管道和不使用管道即地图之间的主要区别是什么?

标签: javascript angular typescript rxjs


【解决方案1】:

在 rxjs 5.5 及更高版本中,如果您想在 observable 上使用任何运算符,您只需将它们管道化即可。所以这里map 只是pipe 中的这些运算符之一。

例如:

const example = source.pipe(map(val => val + 10), first());

对于rxjs 的早期版本,没有pipe 关键字,使用. 表示法组合多个运算符

例如:

const example = source.map(val => val + 10).first();

【讨论】:

    【解决方案2】:

    简单解释一下,RxJS中的pipe,用于截取结果并使用RxJS操作符进行修改,以便在订阅时您将获得与您在 pipe 示例 ma​​ptap 等中设置的逻辑运算符等效的最终结果。

    有关角度练习指南,请在此处查看 https://angular.io/guide/rx-library

    您可以在此处查看运营商列表 https://www.learnrxjs.io/operators/

    【讨论】:

    • 谢谢您的回复,如果有的话可以给一些链接吗?
    • 我刚刚在我的答案中添加了链接
    【解决方案3】:

    map()、filter()、concat() 和 flatMap() 这些是 RxJS 库提供的运算符。 您可以使用管道将这些运算符链接在一起。管道让您可以将多个函数组合成一个函数,如下所示:

    import { filter, map } from 'rxjs/operators';
    
    const squareOddVals = pipe(
    filter((n: number) => n % 2 !== 0),
    map(n => n * n)
    );
    

    【讨论】:

      猜你喜欢
      • 2016-01-19
      • 2013-03-25
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多