可通过初始确认服务进行观察



在返回Observable之前,我需要覆盖一个方法并添加一个特定的确认。但确认服务并不等待决定,也没有提供任何直接的方法来做到这一点。它有一些Observable(requireConfirmation$和accept(,但我无法使用它们。

这不需要等待决定,并调用super.aMethod((immediately(如预期(:

aMethod(): Observable {
this.confirmationService.confirm({
message: 'A question',
accept: () => acceptAction(),
reject: () => rejectAction()
});
return super.aMethod();
}

这是有效的,但它真的很丑陋,事实上它删除了Observable:

aMethod(): Observable {
this.confirmationService.confirm({
message: 'A question',
accept: () => {
acceptAction(); 
super.aMethod().subscribe(() => {})
},
reject: () => {
rejectAction(); 
super.aMethod().subscribe(() => {})
}
});
return EMPTY;
}

有什么好办法吗?

我找到了一个更好的解决方案(请忽略重复(:

aMethod(): Observable {
const subject = new Subject();
this.confirmationService.confirm({
message: 'A question',
accept: () => {
acceptAction(); 
subject.pipe(concatMapTo(super.save(close)));
subject.next();
subject.complete();
},
reject: () => {
rejectAction(); 
subject.pipe(concatMapTo(super.save(close)));
subject.next();
subject.complete();
}
});
return subject.asObservable();
}

最新更新