【发布时间】:2020-10-02 18:18:53
【问题描述】:
使用 rxjs,我想使用之前调用返回的值进行一组 http 调用。我希望内部调用并行执行。我还需要在第一次调用可用时立即返回该值。我需要能够订阅结果并处理任何错误。内部调用产生的错误不应导致同级调用取消。
我有以下代码可以工作,但由于使用了forkJoin,所以在内部调用完成之前等待返回初始值:
public create(customer: Customer, groupIds: number[]): Observerable<Customer> {
const response = this.http.post<Customer>('/customer', customer).pipe(mergeMap(
(created) => {
return forkJoin([
of(created),
forkJoin(groupIds.map(groupId => {
const membership = new Membership(created.Id, groupId);
return this.http.post<Membership>('/membership', membership);
)
]);
}
)).pipe(map(a => a[0]));
return response;
}
有没有办法在不等待内部调用完成的情况下返回创建的客户?除此之外,有没有办法把上面的代码写得更简洁?
(注意:this.http 是来自 Angular 的 HttpClient 类型,并返回 Observable<T>)
【问题讨论】:
标签: typescript rxjs