美文网首页
rxjs为什么要引入Lettable Operators和pip

rxjs为什么要引入Lettable Operators和pip

作者: OnePiece索隆 | 来源:发表于2018-11-10 16:39 被阅读0次

    早期版本的 rxjs 中提供了引入 operator 与 add/operator 两种方式

    • 直接引入函数本身:
      以现有的 JavaScript 语言特性无法进行链式操作,只能够手动嵌套函数调用,影响可读性与可维护性。
    • 对 Observable 的原型进行扩展以增加相应方法
      由于其类型污染的特性,只能在最终应用中使用而无法应用于类库中。此外,如果采用文件单独引入的方式,则需要增加大量的 import ;如果采用统一引入,则无法保证不引入冗余运算符。
      比如你在类库中使用了import 'rxjs/add/operator'的方式引入它,那么别人使用了你的类库,就一定会把这个operator引入进来,而不管有没有实际用到,无法优化,理不清依赖关系,更重要的是,会让使用方自己的代码在依赖了你的类库时,可以找到这个operator(因为被添加到了原型上),但是移除你的类库之后就崩了

    引入的新的Lettable Operator方式同时解决了上述的问题,所有的运算符都从 'rxjs/operators' 模块引入,仅仅需要单一的 import 语句,所有运算符作为参数并列,无需进行嵌套:

    import { range } from 'rxjs/observable/range'
    import { map, filter, scan } from 'rxjs/operators'
    
    const source$ = range(0, 10)
    
    source$.pipe(
      filter(x => x % 2 === 0),
      map(x => x + x),
      scan((acc, x) => acc + x, 0)
    )
    .subscribe(x => console.log(x))
    

    参考:https://zhuanlan.zhihu.com/p/29605289

    相关文章

      网友评论

          本文标题:rxjs为什么要引入Lettable Operators和pip

          本文链接:https://www.haomeiwen.com/subject/xxnzxqtx.html