我正在使用Express開發Node.js API,使用node-rest-client模塊發出http請求。RxJs - 如何實現並行HTTP請求,當您有可變數量的請求時
要開發的API端點之一是/api/v1/users/:userId
,它返回用戶的全部信息,其用戶信息以及有關他所屬部門的詳細信息。
要獲取的信息有這個後端REST服務:
/users/:userId
- 返回與用戶信息JSON對象加上部門ID列表,如:
{ "name" : "xxx",
"departments" : [1, 5 ,6, 8]
}
/departments/:departmentId
- JSON對象與部門信息
{
"id" : x,
"name" : "xxx"
}
到/api/v1/users/1
的調用需要調用
GET /user/1
- >{ "name" : "user1" , "departments" : [1, ,5 ,7 ,8]}
- 獲取部門ID和進行N合來電
/departments/deparmentId
- 所有的呼叫後,組成了完整的JSON響應並返回。
我想使用RxJs將請求對齊,所以我想這將足夠使用Rx.Observable.zip()
。
問題是,如果我有一個Observable數組,它的大小不固定,表示每個HTTP請求調用,我該如何調用Observable.zip()
?
如果數組中元素的個數固定在那裏我woud做這樣的:
var observables = [ obs1, obs2 ];
Rx.Observable.zip(observables[0], observable[1], function(...){...});
但我不知道有多少觀測也有,所以我怎麼能叫ZIP()?
也許與HTTP結合觀測:// reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-combineLatest? – wostex
https://stackoverflow.com/documentation/rxjs/8247/common-recipes/27973/sending-multiple-parallel-http-requests#t=201708111633312560151 – martin