【发布时间】:2018-03-04 20:15:39
【问题描述】:
当异步服务没有返回值但我想使用 Observables 时,我倾向于使用 Observable<boolean>。但我对这个布尔值没有意义,因为服务要么失败,要么成功,如果失败,我希望 Observable 处于错误状态。这只会为观察到的布尔值留下“真实”值。
对于这些情况,Observable<void> 的以下用法是一个好的模式吗?或者Observable<void>的使用有没有可以预见的问题
const asyncFuncWithoutResult = (): Observable<void> => {
// fake something async that has no return value
const itWorked = true; // or not
if (itWorked) {
return Observable.of();
} else {
return Observable.throw(Error('It did not work'));
}
}
// call the service
asyncFuncWithoutResult()
.subscribe(
undefined, // nothing will be emitted when using Observable.of()
(err: any) => console.error(err), // handle error state
() => console.log('Success'), // handle success state
);
【问题讨论】:
-
我看不到任何明显的问题。如果您遇到需要发出任意值的情况,您始终可以使用
concat和Observable.of发出您想要的任何值。例如。asyncFuncWithoutResult().concat(Observable.of("success!")). -
谢谢,这是一个非常有用的提示。
标签: typescript design-patterns rxjs observable void