RxJS:在每次返回并行http请求时更新客户端

时间:2016-04-03 19:47:17

标签: javascript http angular rxjs observable

目标:在返回每个请求后,使用RxJS并激活回调并行运行多个异步http请求。

例如:

getSomeData() {
    Observable.forkJoin(
        this.http.get('/somethingOne.json').map((res:Response) => res.json()),
        this.http.get('/somethingTwo.json').map((res:Response) => res.json())
    ).subscribe(
      data => {
        this.somethingOne = data[0]
        this.somethingTwo = data[1]
      },
      err => console.error(err)
    );
}

上面的代码将并行运行http.get请求并将响应映射到json,但是在每个http响应中,我想要一个我创建的函数被调用。有没有办法将回调函数传递给传递给forkJoin方法的http请求?

1 个答案:

答案 0 :(得分:1)

那会有用吗?只需在当前选择器功能的主体中执行您的功能。 (这里可能存在一些语法错误,因为我不使用ES6)。包含两个版本,具体取决于您希望如何使用该功能,但想法很明确:使用map选择器功能运行您想要的任何逻辑。

getSomeData() {
    Observable.forkJoin(
        this.http.get('/somethingOne.json').map((res:Response) => {myFunction(res); return res.json()}),
        this.http.get('/somethingTwo.json').map((res:Response) => myOtherFunction(res.json()))
    ).subscribe(
      data => {
        this.somethingOne = data[0]
        this.somethingTwo = data[1]
      },
      err => console.error(err)
    );
}