我需要在角度4中进行嵌套的http调用,这是我的场景, 第一个调用是一个搜索api调用,它返回ID列表,然后我需要循环访问ID并使用每个ID进行另一个api调用以获取详细信息。使用angular 4实现此目的的最佳方法是什么。
答案 0 :(得分:4)
你可以使用RxJs Switch Method,通过这样做:
http.get(/*you params here*/).switchMap(firstResponse => {
let idsArray = extractArrayFromResponse(firstResponse);
// Loop through Array
let arrayOfObservables = idsArray.map(id => http.get(/*other params*/));
// Now you need to map it to Obervable of arrays
let obervableOfArrays = arrayOfObservables.merge().toArray();
return obervableOfArrays;
})
请在此处查看Reactive Extensions
的文档:
http://reactivex.io/documentation/operators.html
你可能正在使用它的JS实现,可以在这里找到: https://github.com/reactivex/rxjs
此外,在您的情况下,根据@cyrix的建议检查forkJoin
运算符可能很有用。在这里找到JS实现:
http://reactivex.io/documentation/operators/zip.html