我有一个关于 Angular 4 和 Observable 的快速问题。在我的程序中,我有一个组件,它创建了一个应该发送到 API 的"事物"列表。其次,我有一个服务,它获取一个元素("事物" ->一个!(,将其发送到 api 并返回一个可观察对象。代码如下:元件:
saveTimers() {
// gehe alle selektierten Timer durch und lege Sie an
let timerSuccess = [];
let timerFailed = [];
let timers = [];
for (let epgEntry of this.searchResult) {
if (epgEntry.checked) {
let timer = new Timer;
// magic
this.timerService.saveTimer(timer).
subscribe(
data => {
console.log(data);
if (data) {
timerSuccess.push(timer);
} else {
timerFailed.push(timer);
}
},
error => { this.variables.setFailure(error); }
);
}
}
//both empty, because api didn´t return yet
console.log(timerSuccess);
console.log(timerFailed);
if (timerSuccess.length > 0) {
this.variables.setSuccess('Timer erfolgreich angelegt');
}
if (timerFailed.length > 0) {
this.variables.setFailure('Timer konnte(n) nicht angelegt werden');
}
}
服务:
saveTimer(timer: Timer): Observable<boolean> {
// magic --> returns an observable
}
现在的问题:我如何使用 Observable.forkJoin(((在组件中(一次执行所有 api 调用(顺便说一句,等待所有 api 调用(?
非常感谢!
像这样:
Observable.forkJoin(Observable.of(YOUR_ARRAY), saveTimer(timer: Timer))
.switchMap(joined => Observable.forkjoin(http.post(joined[0]), http.post(joined[1])))
.subscribe();
在第一个分叉连接中,您可以组合要发送的值。在第二个中,您将合并两个 api 调用的结果。