我有一个多步骤的过程 - 一个回调函数和两个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,在它们产生时取消它们的前一个。
答案 0 :(得分:3)
您可以使用内置运算符执行此操作,如下所示:
observableFromEvent = evt => Observable
.bindCallback(callbackFn)(evt)
.flatMap(promiseF1)
.flatMap(promiseF2)