【发布时间】:2018-03-31 03:46:15
【问题描述】:
以下是我的代码的简化版本。问题是 finally 块比我想要的要早执行。我希望它仅在所有其他 Observables 完成后执行。
let data1 = 'test1'
let data2 = 'test2'
const input = Rx.Observable.from([data1, data2])
.finally(() => {
console.log('end')
})
let output = input.concatMap((text) => {
let promise = Promise.resolve(text)
return Rx.Observable.fromPromise(promise)
})
output.subscribe((x) => {console.log(x)})
输出:
end
test1
test2
预期输出:
test1
test2
end
【问题讨论】:
-
你为什么期望这个输出?
concatMap被添加到之后finally -
对不起,这就是我需要它的行为方式,因此我的问题。我需要一个替代品
-
另外,从
concatMap中删除异步/承诺确实会产生预期的输出......行为上的奇怪差异?
标签: javascript promise rxjs observable es6-promise