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

时间:2017-04-14 02:33:32

标签: angular rxjs angular2-observables reactivex

我有一个多步骤的过程 - 一个回调函数和两个promise-returns函数 - 我想构建一个支持被取消的Observable。我得到的是:

function parseISOLocal(s) {
  var b = s.split(/\D/);
  var d = new Date(b[0], --b[1], b[2]);
  return d && d.getMonth() == b[1]? d : new Date(NaN);
}

var d = parseISOLocal('2017-04-13');
d.setHours(12);
console.log(d.toString());

有人能告诉我我是否遗漏了什么?还是留了太多? 我的用途是:

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
    }
})

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

1 个答案:

答案 0 :(得分:3)

您可以使用内置运算符执行此操作,如下所示:

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