Rx js了解升力法

ng2*_*ser 11 javascript rxjs

我想创建一个新的运算符,我在文档中发现其中一种方法是执行以下操作:

class MyObservable extends Observable {
  lift(operator) {
    const observable = new MyObservable()
    observable.source = this;
    observable.operator = operator;
    return observable;
  }

  // put it here .. or ..
  customOperator() {
    /* do things and return an Observable */
  }
}

// ... put it here...
MyObservable.prototype.mySimpleOperator = mySimpleOperator;
Run Code Online (Sandbox Code Playgroud)

我不明白这个lift方法是什么,这里发生了什么,有人可以帮忙吗?

Her*_*man 18

lift在RxJS 5内部一直使用.提升的原则是你准备一个新的Observable,在订阅时将按照运营商定义的方式转发事件.保罗·泰勒(https://youtu.be/QhjALubBQPg?t=19m)有一段关于它的好视频.电梯是一个非常基础的构件.

而不是创建一个新类 - 扩展Observable - 你也可以创建运算符本身.然后,操作员的用户可以通过以下方式调用它:

Observable.of(1, 2, 3)
  .lift(new MyCustomOperator)
  .subscribe()
Run Code Online (Sandbox Code Playgroud)

这意味着没有人必须知道Observable API中还有另一个运算符,但却看到它是在别处定义的东西.

理想情况下你可以写

someObservable::myCustomOperator();
Run Code Online (Sandbox Code Playgroud)

但不幸的是,绑定操作符可能很长/永远不会发生,所以.lift(operator)看起来像是最明确/最干净的方式.