目标:在返回每个请求后,使用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请求?
答案 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)
);
}