javascript - 在 react 可观察中使用史诗的一个输出作为史诗的另一个输入

标签 javascript react-native rxjs redux-observable

我正在使用react-observable来开发react-native应用程序。

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

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

const getLocationEpic = action$ =>
    action$.ofType('GET_LOCATION')
        .mergeMap(() =>
            currentPosition$()
                .map(data => ({
                    type: 'GET_LOCATION_SUCCESS',
                    data: {"latitude": data.coords.latitude, "longitude": data.coords.longitude}
                }))
                .catch(error => {
                    console.log("GET POSITION ERR", error);
                    return Observable.of({type: 'GET_POSITION_ERROR', error: error});
                })
        );
const getAddressEpic = action$ =>
    action$.ofType('GET_ADDRESS')
        .switchMap(action =>
            ajax(`https://maps.googleapis.com/maps/api/geocode/json?latlng=${latitude},${longitude}`)
                .map(data => (data))
                .do({
                    next: data => {
                        console.log("address data");
                        console.log(data);
                    }
                })
                .map(data => ({
                    type: 'GET_POSITION_SUCCESS', data: data.response.results[0].formatted_address
                }))
                .mergeMap(() =>
                    currentPosition$()
                        .map(data => ({
                            type: 'GET_ADDRESS_SUCCESS',
                            data: {"latitude": data.coords.latitude, "longitude": data.coords.longitude}
                        }))
                        .catch(error => {
                            console.log("GET_ADDRESS_ERROR", error);
                            return Observable.of({type: 'GET_ADDRESS_ERROR', error: error});
                        })
                ));

最佳答案

可能是这样的:

getLocationEpic(action)
    .mergeMap( (action) => getAddressEpic(action) )
    .subscribe( (data) => {
        /* get the result from epic 1 to epic 2 */
    })

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

关于javascript - 在 react 可观察中使用史诗的一个输出作为史诗的另一个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45852079/

相关文章:

Angular 5 - Rxjs forkJoin

javascript - 数据表加载数据成功但无法通过名称访问它

javascript - React-Native:无法从表单值设置状态

javascript - GET请求后如何从html响应中获取数据

react-native - React Native - 嵌套导航器时 react 导航缓慢转换

xcode - 在 React Native 应用程序中为 Fabric crashlytics 日志添加导入文件后,在 Xcode 中找不到 RCTLog.h 文件错误

typescript - 为什么 Typescript 不让 BehaviorSubject 采用联合类型?

javascript - 如何创建一个仅在有订阅者时触发的 Observable,并立即为新订阅者提供最新值

javascript - 将文本字段输入除以设置的数字,显示结果

javascript - 未捕获的TypeError : has no method 'storeKeyFor'