在React-Redux Epic中,我试图调用get方法1,然后根据第一个method1的结果调用get方法2。
export const testEpic = (action$, state) => {
return merge(
action$.pipe(
ofType(EpicTypes.API1),
map((action) => {
const api1Url = `http://10.1.2.345/api1`;
return ajax.getJSON(loginUrl);
}),
).pipe(
map((result1) => {
console.log(`api1 result:`, result1); // result1 is
const {id} = result1;
const api2Url = `http://10.1.2.345/api2/${id}`;
return ajax.getJSON(api2Url)
}),
).pipe(
mpa((result2) => { ....... }
..........
我希望调用api1,将result1转到第二张地图,然后使用result1调用api2,并获取result2。但是,看来api1 result
可以观察到。我应该怎么做才能得到result1并在其上进行另一个api调用?
答案 0 :(得分:1)
用map
代替concatMap
,您应该得到想要的东西。
原因是像concatMap
(或switchMap
mergeMap
)之类的函数在其内部订阅时会收到一个Observable输入,并返回一个可以订阅的新Observable。这样,当订阅了最后一个Observable时,首先执行第一个Observable,第二个Observable可以使用其结果。