我想创建一个新的运算符,我在 documentation 中找到其中一种方法是做这样的事情:
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;
我不明白什么是 lift
方法以及这里发生了什么,有人可以帮忙吗?
最佳答案
lift
一直在 RxJS 5 内部使用。lift 的原理是你准备一个新的 Observable,在订阅时将按照运算符(operator)定义的方式转发事件。 Paul Taylor ( https://youtu.be/QhjALubBQPg?t=19m ) 有一个很好的视频。电梯是一个非常基本的构建 block 。
除了创建一个新类——扩展 Observable——你也可以只创建 Operator 本身。然后,运算符(operator)的用户可以通过以下方式调用它:
Observable.of(1, 2, 3)
.lift(new MyCustomOperator)
.subscribe()
这意味着没有人必须知道 Observable API 中还有另一个运算符可用,而是看到它是在其他地方定义的东西。
理想情况下你可以写
someObservable::myCustomOperator();
但不幸的是,绑定(bind)运算符可能已经存在很长时间/永远不会发生,所以 .lift(operator)
似乎是最明确/最干净的方式。
关于javascript - Rx js 理解 lift 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43774407/