gpt4 book ai didi

rxjs 合并和错误处理

转载 作者:行者123 更新时间:2023-12-04 18:01:47 25 4
gpt4 key购买 nike

我想组合/合并多个 Observables,并在每个 Observables 完成后执行 finally 函数。 merge运算符似乎并行执行每个订阅,这正是我所需要的,但如果其中任何一个抛出错误,则执行将停止。

RxJS 版本 4 有一个操作符 mergeDelayError这应该保持所有订阅执行,直到所有订阅都完成,但此运算符未在版本 5 中实现。

我应该改用不同的运营商吗?

var source1 = Rx.Observable.of(1,2,3).delay(3000);
var source2 = Rx.Observable.throw(new Error('woops'));
var source3 = Rx.Observable.of(4,5,6).delay(1000);

// Combine the 3 sources into 1

var source = Rx.Observable
.merge(source1, source2, source3)
.finally(() => {

// finally is executed before all
// subscriptions are completed.

console.log('finally');

});

var subscription = source.subscribe(
x => console.log('next:', x),
e => console.log('error:', e),
() => console.log('completed'));

JSBin

最佳答案

我认为您可以通过使用 catch() 来模拟相同的行为。 .你只需要将它附加到每个源 Observable 中:

const sources = [source1, source2, source3].map(obs => 
obs.catch(() => Observable.empty())
);

Rx.Observable
.merge(sources)
.finally(...)
...

关于rxjs 合并和错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45738571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com