0
我需要做角度4嵌套的http調用,這是我的場景, 第一個調用是一個搜索API調用,它返回ID列表,然後我需要遍歷ID並使另一個API調用每個ID來獲取詳細信息。什麼是實現最佳的方法本採用了棱角分明4.角度嵌套的HTTP調用4
我需要做角度4嵌套的http調用,這是我的場景, 第一個調用是一個搜索API調用,它返回ID列表,然後我需要遍歷ID並使另一個API調用每個ID來獲取詳細信息。什麼是實現最佳的方法本採用了棱角分明4.角度嵌套的HTTP調用4
可以實現這一目標使用RxJs切換方法,通過做這樣的事情:
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
我會建議說,你的github鏈接是RxJs版本4,最新版本是這樣的:https://github.com/reactivex/rxjs,也許增加一些關於' forkJoin'運算符,因爲它然後等待所有的resquests在發射之前完成。 – cyrix
@cyrix關於rxjs版本的好處。我更新了答案。 – eddyP23
@ eddyP23 Iam得到錯誤'屬性合併不存在於類型爲observable的數組' –