RxJs如何完成内部可观测
我有这样的功能:RxJs如何完成内部可观测,rxjs,Rxjs,我有这样的功能: this.eventTaskWorking$ = completeStage .pipe( map(result => { switch (result) { case Statuses.LAST_TASK: { console.info('returning finish event observable'); throw { err: 0 }; } defa
this.eventTaskWorking$ = completeStage
.pipe(
map(result => {
switch (result) {
case Statuses.LAST_TASK: {
console.info('returning finish event observable');
throw { err: 0 };
}
default: {
return EMPTY;
}
}
}),
catchError(() => completeEvent)
)
.subscribe();
当我抛出异常时,“completeEvent”已完成,但如果我尝试使用switchMap、mergeMap等,它将不起作用:
this.eventTaskWorking$ = completeStage
.pipe(
map(result => {
switch (result) {
case Statuses.LAST_TASK: {
return completeEvent;
}
default: {
return EMPTY;
}
}
}),
switchMap(t => t),
)
.subscribe();
怎么了
UPD:
const completeEvent=this.FinishEvent(eventRef,uid);
私有FinishEvent(eventRef:Observable,taskUid:string):Observable{
返回事件参考管道(
switchMap(t=>this.UpdateTaskStatus(taskUid,3));
}
好的,看来FinishEvent没有返回observable,我的错误,和“它不工作”是什么意思?@cartant completeEvent是一个函数,返回了observable值,但这个observable的管道体函数没有执行。这需要一个。
const completeEvent = this.FinishEvent(eventRef, uid);
private FinishEvent(eventRef: Observable<IEvent>, taskUid: string): Observable<any> {
return eventRef.pipe(
switchMap(t => this.UpdateTaskStatus(taskUid, 3)));
}