我有下一个功能:
saveTable() {
...
let promises = [];
for (index = 0; index < this._TOTAL.length; ++index) {
let promise = this.db.object(ref).update(this._TOTAL[index]);
promises.push(promise);
}
Observable.forkJoin(promises).subscribe(() => {
this.messagesService.createMessage('success', `Saved`);
this.router.navigate(['/dashboard/my-calculations']);
})
}
在这种情况下如何处理错误?实际上,在我所有的诺言兑现之后,我只需要使用then
和catch
,所以对我来说,从根本上不使用forkJoin
。
答案 0 :(得分:1)
forkJoin
将引发错误。您可以在错误处理程序中对其进行处理:
Observables
答案 1 :(得分:1)
您可以执行以下代码
import { catchError } from 'rxjs/operators';
import { of } from 'rxjs/observable/of';
import { forkJoin } from 'rxjs/observable/forkJoin';
forkJoinTest() {
const prouctIds: number[] = [1, 2, 3];
const productRequests = prouctIds.map(id => this.productService.getProduct(id).pipe(
catchError(error => of(`Bad Promise: ${error.message}`))
));
const requests = forkJoin(productRequests);
requests.subscribe(
data => console.log(data) //process item or push it to array
);
}
基本上使用catchError
运算符,它将为您完成
在此处查看详细信息:Way to handle Parallel Multiple Requests