Javascript 在react observable中使用epic的一个输出作为epic的另一个输入

Javascript 在react observable中使用epic的一个输出作为epic的另一个输入,javascript,react-native,rxjs,redux-observable,Javascript,React Native,Rxjs,Redux Observable,我正在使用react observable开发react本机应用程序 我有两个史诗,一个用来获取纬度和经度,另一个用来通过纬度和经度获取地址 我的问题是,当我想在一部史诗中做一件事时,我如何使用第一部史诗的输出作为第二部史诗的输入 const getLocationEpic=action$=> 类型为('GET_LOCATION'的操作$) .mergeMap(()=> 当前位置$() .map(数据=>({ 键入:“获取位置成功”, 数据:{“latitude”:data.coords.lat

我正在使用react observable开发react本机应用程序

我有两个史诗,一个用来获取纬度和经度,另一个用来通过纬度和经度获取地址

我的问题是,当我想在一部史诗中做一件事时,我如何使用第一部史诗的输出作为第二部史诗的输入

const getLocationEpic=action$=>
类型为('GET_LOCATION'的操作$)
.mergeMap(()=>
当前位置$()
.map(数据=>({
键入:“获取位置成功”,
数据:{“latitude”:data.coords.latitude,“longitude”:data.coords.longitude}
}))
.catch(错误=>{
日志(“获取位置错误”,错误);
返回可观测的({type:'GET\u POSITION\u ERROR',ERROR:ERROR})的;
})
);
const getAddressEpic=action$=>
类型为('GET_ADDRESS'的操作$)
.switchMap(操作=>
阿贾克斯(`https://maps.googleapis.com/maps/api/geocode/json?latlng=${纬度},${经度}`)
.map(数据=>(数据))
.做({
下一步:数据=>{
控制台日志(“地址数据”);
控制台日志(数据);
}
})
.map(数据=>({
键入:“获取位置成功”,数据:data.response.results[0]。格式化的地址
}))
.mergeMap(()=>
当前位置$()
.map(数据=>({
键入:“获取地址成功”,
数据:{“latitude”:data.coords.latitude,“longitude”:data.coords.longitude}
}))
.catch(错误=>{
日志(“获取地址错误”,错误);
返回({type:'GET\u ADDRESS\u ERROR',ERROR:ERROR})的可观测值;
})
));

可能是这样的:

getLocationEpic(操作)
.mergeMap((操作)=>getAddressEpic(操作))
.订阅((数据)=>{
/*从epic 1到epic 2获得结果*/
})

细节:获取
getLocationEpic
的结果,然后将其展平并将结果输入
getAddressEpic
。订阅它以获得最终结果。

它可能是这样的:

getLocationEpic(操作)
.mergeMap((操作)=>getAddressEpic(操作))
.订阅((数据)=>{
/*从epic 1到epic 2获得结果*/
})

细节:获取
getLocationEpic
的结果,然后将其展平并将结果输入
getAddressEpic
。订阅它以获得最终结果。

在redux observable中,您的epics会收到所有已调度操作的流——可能不明显的是,其中包括其他epics调度的操作。这是一个非常强大的特性,因为您可以编写不需要与其他Epic中的实现细节耦合的Epic。行动就是契约

在您的例子中,您说过要将它们按1排序。获取经度/纬度2。然后使用long/lat获取他们的地址

您的
getAddressEpic
只需监听
GET\u LOCATION\u SUCCESS
即可收到通知并接收long/lat值

const getAddressEpic=action$=>
类型为('GET\u LOCATION\u SUCCESS')/的操作$
//现在可以使用该操作的long/lat
ajax(`${apiURL}/geocode/json?latlng=${action.data.latitude},${action.data.longitude}`)

在redux observable中,您的epics接收到所有已调度操作的流——可能不明显的是,其中包括其他epics调度的操作。这是一个非常强大的特性,因为您可以编写不需要与其他Epic中的实现细节耦合的Epic。行动就是契约

在您的例子中,您说过要将它们按1排序。获取经度/纬度2。然后使用long/lat获取他们的地址

您的
getAddressEpic
只需监听
GET\u LOCATION\u SUCCESS
即可收到通知并接收long/lat值

const getAddressEpic=action$=>
类型为('GET\u LOCATION\u SUCCESS')/的操作$
//现在可以使用该操作的long/lat
ajax(`${apiURL}/geocode/json?latlng=${action.data.latitude},${action.data.longitude}`)

你好。这回答了你的问题吗?嘿。这回答了你的问题吗?