Angular-如何链接多个调用

时间:2019-02-13 13:39:14

标签: angular

在我的angular 7应用程序中,我需要链接多个HTTP Get调用,并且对于任何调用,如果我不需要在下一个调用中直接使用响应,则还需要等待该调用才能完成。 / p>

我不想在订阅中使用订阅,等等,因为代码很糟糕。

例如,如果我有4个函数,实现它的最佳实践是什么?

2 个答案:

答案 0 :(得分:3)

尝试forkJoin

linkContractToDepartment(data): Observable<any> {
        return this.httpClient.get<any>(
            '/something/link-contract',
            data
        );
}

calls = [];
calls.push(this.linkContractToDepartment(1));
calls.push(this.linkContractToDepartment(2));


forkJoin(calls).subscribe(response_list=> { console.log(response_list) })

答案 1 :(得分:1)

就像其他人说的那样,Angular与RxJS完美地结合在一起。但是官方文档有点混乱。尝试使用angular AND RXJS查找真实示例。范例:https://blog.angularindepth.com/practical-rxjs-in-the-wild-requests-with-concatmap-vs-mergemap-vs-forkjoin-11e5b2efe293

Learn rxjs是RxJS的另一个不错的资源

要恢复:

  • 为避免订阅,请使用可观察
  • 如果多个异步调用是独立的,请使用 forkJoin
  • 如果异步调用需要先前的异步查询,请使用 mergeMap
  • 如果异步调用需要多个异步查询,请使用 combineLatest