我想创建一个新的运算符,我在文档中发现其中一种方法是执行以下操作:
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)看起来像是最明确/最干净的方式.