【发布时间】:2018-07-22 15:13:17
【问题描述】:
我正在制作一项服务,该服务具有多种触发 HTTP 调用的方法。我想向客户显示一个 Observable,告诉他们是否有任何待处理的调用。
我认为这种方法通常会奏效,但感觉很老套,不太像 RxJs。我搜索了整个 StackOverflow 和 RxJs 文档,但找不到更好的方法。有什么建议吗?谢谢!
let pendingCountSubject = new BehaviorSubject<number>(0);
let pendingCount$ = pendingCountSubject.asObservable();
let pendingSubject = new Subject<Observable<any>>();
pendingSubject.pipe(
finalize(() => {
pendingCountSubject.next(pendingCountSubject.value - 1);
}))
.subscribe();
function trackPendingObservable(obs) {
pendingCountSubject.next(pendingCountSubject.value + 1);
pendingSubject.next(obs);
}
trackPendingObservable(httpCall1);
trackPendingObservable(httpCall2);
trackPendingObservable(httpCall3);
在模板中:
Pending calls: {{ pendingCount$ | async }}
【问题讨论】: