根据本文 http://paqmind.com/posts/rxjs-error-and-completed-events-demystified/, onComplete
and onError
的功能subscribe
是互斥的。
意思是要么onError
or onComplete
事件将在我的subscribe
.
我有一个逻辑块,无论我收到错误还是成功完成我的信息流,都需要执行该逻辑块。
我查找了类似的东西finally在Python中 https://docs.python.org/3/tutorial/errors.html,但我发现的是finally https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/finally.md需要附加到我创建的可观察对象上。
但我只想在订阅时以及流结束后执行该逻辑,无论是成功还是错误。
有任何想法吗?
该运算符当前的“pipable”变体称为finalize()
(自 RxJS 6 起)。较旧且现已弃用的“补丁”运算符被称为finally()
(直到 RxJS 5.5)。
I think finalize()
运算符实际上是正确的。你说:
仅当我订阅时以及流结束后才执行该逻辑
我认为这不是问题。你可以拥有一个source
并使用finalize()
如果您愿意,请先订阅它。这样你就不需要always use finalize()
:
let source = new Observable(observer => {
observer.next(1);
observer.error('error message');
observer.next(3);
observer.complete();
}).pipe(
publish(),
);
source.pipe(
finalize(() => 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
2019 年 1 月:更新了 RxJS 6
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)