让我们看看这个伪代码:
obs$.subscribe( response => {
if (response.statusFlag) {
console.log('Everything is good');
} else {
// I need to switch into the error-part of my observer: pseudoCode
// I need to go into Error-World
moveIntoErrorPart();
}
},
error => {
console.log('Im in Error-World');
});
对于
// 'Everything is good'
// 'Im in Error-World'
如何从INSIDE next
移至error
?
答案 0 :(得分:2)
您可以在pipe()
内移动逻辑
obs$.pipe(
mergeMap(res => res.statusFlag==true ? of(res) : throwError('error'))
)
.subscribe(...)
答案 1 :(得分:1)
在管道中进行确实是有效的,但我会这样说:
obs$.pipe(
filter(res => res.statusFlag),
throwIfEmpty(),
)
.subscribe(...)
在我的示例中,有一个细微但重要的区别: 如果存在多种排放,则仅需要一种成功的排放。 在范的例子中: 如果存在多种排放,则只有一个失败的响应足以使整个链出错。
如果obs $仅具有一次发射,那么这种差异将无关紧要,我想这可能是这种情况,但否则请确保您知道用例。