角度4的嵌套HTTP调用

时间:2017-08-01 08:18:30

标签: angular http rxjs angular2-observables

我需要在角度4中进行嵌套的http调用,这是我的场景, 第一个调用是一个搜索api调用,它返回ID列表,然后我需要循环访问ID并使用每个ID进行另一个api调用以获取详细信息。使用angular 4实现此目的的最佳方法是什么。

1 个答案:

答案 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