这是可取消的 Observable 的合理实现吗?

Is this a reasonable implementation of a cancelable Observable?

我有一个多步骤过程 - 一个回调函数和两个承诺返回函数 - 我想围绕它构建一个支持取消的 Observable。我得到的是:

let observableFromEvent = evt => Observable.create(({ next, error, complete }) => {
    let canceled
    Promisify(callbackFn)(evt)
       .then(r => !canceled && promiseF1(r))
       .then(r => !canceled && promiseF2(r))
       .then(next)
       .then(complete, error)
    return () => {
        canceled = true
    }
})

谁能告诉我是否遗漏了什么?还是留下太多了? 我的预期用途是:

event$.switchMap(observableFromEvent)

创建一系列 Observable,在生成时取消它们之前的 Observable。

您可以使用内置运算符来完成,如下所示:

observableFromEvent = evt => Observable
  .bindCallback(callbackFn)(evt)
  .flatMap(promiseF1)
  .flatMap(promiseF2)