javascript - Rx js 理解 lift 方法

标签 javascript rxjs

我想创建一个新的运算符,我在 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/

相关文章:

javascript - 隐藏没有特定属性的 DOM 元素

javascript - 如何在 IE 中的文档上触发 "onload"事件

rxjs - 从不断增长的数组中重复发出值

javascript - 为什么 ViewChild 不能与 angular8+ 中的 attr.id 一起使用?

angular - 链接多个 RxJS Observable 运算符的问题

javascript - 即使水平滚动也使元素保持在右侧

javascript - 无法从 JS 函数访问组合日期

javascript - 无法更改 Angular JS 中的位置路径

javascript - 如何将多个键与 distinctUntilKeyChanged 进行比较?

angular - 效果 "AuthEffects.authLogin$"发送无效操作 : undefined