可观察终于订阅
问题描述:
根据this artcle,onComplete
和onError
功能subscribe
是互斥的。可观察终于订阅
含义onError
或onComplete
事件将在我的subscribe
中激发。
我有一个逻辑块,无论我收到错误还是成功完成信息蒸汽,都需要执行。
我抬头寻找类似finally
in python的东西,但是我发现的所有东西都是finally
,它需要附加到我创建的可观察物上。
但是我只想在订阅时以及流结束后,不管是成功还是错误,都要这样做。
任何想法?
答
我认为finally()
运算符实际上是正确的。你说:
做到这一点的逻辑,只有当我订阅,流结束之后
这不是一个问题,我想。如果需要,您可以在订阅之前有一个source
并使用finally()
。你不需要总是使用这finally()
方式:
let source = Observable.create(observer => {
observer.next(1);
observer.error('error message');
observer.next(3);
observer.complete();
}).publish();
source
.finally(() => console.log('Finally callback'))
.subscribe(
value => console.log('#1 Next:', value),
error => console.log('#1 Error:', error),
() => console.log('#1 Complete')
);
source
.subscribe(
value => console.log('#2 Next:', value),
error => console.log('#2 Error:', error),
() => console.log('#2 Complete')
);
source.connect();
这将打印到控制台:
#1 Next: 1
#2 Next: 1
#1 Error: error message
Finally callback
#2 Error: error message
有趣,我没有想到的是,由于 –
。最后()对我的作品。谢谢。 – STEEL
有趣的是,它是Promise的一种相反的模式,因为首先追加了'finally()'方法,并且订阅必须强制通过/失败。 – BradGreens