Rxjs 为什么';你不能完成可观察的吗?
在下面的代码中,我有条件地切换到另一个可观察对象。如果满足条件,则工作正常。如果不满足该条件并且我从switchMap返回空,则不执行subscribe块中的代码 如果我将Rxjs 为什么';你不能完成可观察的吗?,rxjs,Rxjs,在下面的代码中,我有条件地切换到另一个可观察对象。如果满足条件,则工作正常。如果不满足该条件并且我从switchMap返回空,则不执行subscribe块中的代码 如果我将returnempty更改为return of(x)它会工作 this.claimStoreService.setProducts(this.claim.products) .pipe(switchMap(x => { if (this.incomeEligibility) { return
returnempty
更改为return of(x)
它会工作
this.claimStoreService.setProducts(this.claim.products)
.pipe(switchMap(x => {
if (this.incomeEligibility) {
return this.claimStoreService.saveIncomeEligibility();
} else {
return EMPTY;
}
}))
.subscribe(() => {
this.isSaving = false;
this.goIntoDisplayMode();
}, () => {
this.isSaving = false;
});
尝试使用第三个回调:
this.claimStoreService.setProducts(this.claim.products)
.pipe(开关映射(x=>{
如果(这是不可原谅的){
返回此.claimStoreService.saveIncomeEligibility();
}否则{
返回空;
}
}))
.订阅(
()=>this.goIntoDisplayMode(),
console.err,
()=>this.isSaving=false,
);
尝试使用第三个回调:
this.claimStoreService.setProducts(this.claim.products)
.pipe(开关映射(x=>{
如果(这是不可原谅的){
返回此.claimStoreService.saveIncomeEligibility();
}否则{
返回空;
}
}))
.订阅(
()=>this.goIntoDisplayMode(),
console.err,
()=>this.isSaving=false,
);
如果将观察员传递到subscribe
功能,可能会更清楚。您的代码将成为
this.claimStoreService.setProducts(this.claim.products)
.pipe(switchMap(x => {
if (this.incomeEligibility) {
return this.claimStoreService.saveIncomeEligibility();
} else {
return EMPTY;
}
}))
.subscribe({
next: () => this.goIntoDisplayMode(),
error: err => console.error(err),
complete: () => this.isSaving = false,
});
如果将观察员传递到
subscribe
函数,可能会更清楚。您的代码将成为
this.claimStoreService.setProducts(this.claim.products)
.pipe(switchMap(x => {
if (this.incomeEligibility) {
return this.claimStoreService.saveIncomeEligibility();
} else {
return EMPTY;
}
}))
.subscribe({
next: () => this.goIntoDisplayMode(),
error: err => console.error(err),
complete: () => this.isSaving = false,
});
好的,这是可行的,现在我看到EMPTY完成了,但是没有调用success回调。很好,很高兴有你helped@JamieIde:这是一篇内容丰富的帖子,谢谢分享。那么,您是否通过将isSaving移动到finalize来解决问题block@Dwaraka我最终使用了(x)的返回。好的,这是可行的,现在我看到EMPTY完成了,但是没有调用success回调。很好,很高兴有你helped@JamieIde:这是一篇内容丰富的帖子,谢谢分享。那么,您是否通过将isSaving移动到finalize来解决问题block@Dwaraka我最终使用了(x)的返回。