Node.js RxJs-当您要发出的请求数量可变时,如何实现并行HTTP请求

Node.js RxJs-当您要发出的请求数量可变时,如何实现并行HTTP请求,node.js,express,rxjs,reactive-programming,Node.js,Express,Rxjs,Reactive Programming,我正在使用Express开发Node.js API,使用Node rest客户端模块发出http请求 要开发的API端点之一是/API/v1/users/:userId,它返回用户的完整信息、用户信息以及他所属部门的详细信息 要获取信息,请使用以下后端REST服务: /users/:userId-返回包含用户信息和部门ID列表的JSON对象,例如: { "name" : "xxx", "departments" : [1, 5 ,6, 8] } /departments/:departme

我正在使用Express开发Node.js API,使用Node rest客户端模块发出http请求

要开发的API端点之一是
/API/v1/users/:userId
,它返回用户的完整信息、用户信息以及他所属部门的详细信息

要获取信息,请使用以下后端REST服务:

/users/:userId
-返回包含用户信息和部门ID列表的JSON对象,例如:

{ "name" : "xxx",
  "departments" : [1, 5 ,6, 8]
}
/departments/:departmentId
-JSON对象和department信息

{ 
  "id" : x,
  "name" : "xxx"
}
调用
/api/v1/users/1
需要调用

  • GET/user/1
    ->
    {“name”:“user1”,“departments”:[1,5,7,8]}
  • 获取部门ID并拨打n个电话至
    /departments/departmentID
  • 在所有调用之后,编写完整的JSON响应并返回它
  • 我想使用RxJs并行化请求,所以我想使用
    Rx.Observable.zip()
    就足够了

    问题是,如果我有一个大小不固定的Observable数组,代表每个HTTP请求调用,那么我如何调用
    Observable.zip()

    如果数组中元素的数量固定,我会这样做:

    var observables = [ obs1, obs2 ];
    
    Rx.Observable.zip( observables[0], observable[1], function(...){...});
    

    但是我不知道有多少个可观察对象,所以我如何调用zip()?

    您可以使用es6中的
    操作符

    var observables = [obs1, obs2, obs3, ...,  obsx];
    Rx.Observable.zip(...observables, function() {});
    

    另一种方法是使用
    forkJoin
    ,它可以作为array


    Rx.Observable.forkJoin([obs1,…,obsN]).subscribe(…)

    也许可以将可观测数据与?酷!我要试试看