根据this artcle的说法,onComplete
和subscribe
的onError
功能是相互排斥的。
这意味着onError
或onComplete
事件将在我的subscribe
中触发。
我有一个逻辑块,无论我收到一个错误,还是我成功地完成了我的信息流,都需要执行它。
我查找了像finally
in python这样的东西,但我找到的只是finally
,它需要附加到我创建的可观察对象上。
但我希望仅在订阅时和流结束后才执行该逻辑,无论是成功还是错误。
有什么想法吗?
发布于 2019-01-10 01:33:15
唯一对我起作用的就是这个
fetchData()
.subscribe(
(data) => {
//Called when success
},
(error) => {
//Called when error
}
).add(() => {
//Called when operation is complete (both success and error)
});
发布于 2018-09-29 00:29:18
我现在在一个Angular应用程序中使用RxJS 5.5.7,使用finalize
运算符在我的用例中有一个奇怪的行为,因为它在成功或错误回调之前被触发。
简单的例子:
// Simulate an AJAX callback...
of(null)
.pipe(
delay(2000),
finalize(() => {
// Do some work after complete...
console.log('Finalize method executed before "Data available" (or error thrown)');
})
)
.subscribe(
response => {
console.log('Data available.');
},
err => {
console.error(err);
}
);
我不得不在订阅中使用add
方法来实现我想要的功能。基本上是在成功或错误回调完成后的finally
回调。例如try..catch..finally
块或Promise.finally
方法。
简单的例子:
// Simulate an AJAX callback...
of(null)
.pipe(
delay(2000)
)
.subscribe(
response => {
console.log('Data available.');
},
err => {
console.error(err);
}
)
.add(() => {
// Do some work after complete...
console.log('At this point the success or error callbacks has been completed.');
});
https://stackoverflow.com/questions/40707379
复制相似问题