完整的回调无法按预期工作。让我解释一下:
查看此图片,请注意complete
方法中的subscribe
回调。
只有在调用complete
时才会调用此observerOrNext
函数。发生某些错误时,不会调用complete
。这是正确的?还有另一种获取回调的方法,在进程完成时始终会调用它?
示例:
成功时:
this.getData(params)
.subscribe(
successData => {
// this is called
},
error => {
// this is not called. Ok!
},
() => { // when complete
// this is called, ok!
}
);
出错时:
this.getData(params)
.subscribe(
successData => {
// this is not called, ok!
},
error => {
// this is called. Ok! Yeah!
},
() => { // when complete
// this is not called, why god??
}
);
答案 0 :(得分:2)
我认为您正在寻找的是.finally
功能。
在源可观察序列正常或异常终止后调用指定的操作。有一个名为finallyAction的别名,用于浏览器< IE9
以下是一个例子: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/finally.md
答案 1 :(得分:0)
对于 rxjs 6
使用 pipe/finalize
:
import { finalize } from 'rxjs/operators';
this.getData(params)
.pipe(
finalize(() => {
// this is called on both success and error
})
)
.subscribe(
(successData) => { },
(err) => { }
);