【发布时间】:2018-04-07 01:05:36
【问题描述】:
我是 rxjs 的新手,并且正在使用 redux-observable。简而言之,当我获得连接时,我需要发出几个承诺请求,然后输出结果。我想知道是否有一种方法可以在最后将其加入到单个地图中,而不必多次调用 store.dispatch 并为每个读取的个人重试工作。提前感谢您的 cmets。
export const handleBleConnectionSuccess = (action$,store,{bleCommunicator}) =>
action$.ofType(c.BLE_CONNECTION_SUCCESS)
.do((a)=>{
Observable.fromPromise(bleCommunicator.readCharacteristic(a.device.id,gattInfo.uuid,gattInfo.firmwareRevision.uuid))
.do((value)=>store.dispatch({type:c.DEVICE_FIRMWARE_VERSION,device:{...a.device,firmwareVersion:value}}))
.retry(3);
Observable.fromPromise(bleCommunicator.readCharacteristic(a.device.id,gattInfo.uuid,gattInfo.modelNumber.uuid))
.do(value=>store.dispatch({type:c.DEVICE_MODEL_NUMBER,device:{...a.device,modelNumber:value}}))
.retry(3);
})
.mapTo({type:'DEVICE_INFORMATION_REQUESTED'});
【问题讨论】:
-
这真的取决于状态更新副作用是真的需要还是要按顺序,我用rxjs越多我觉得redux不太有用
-
我确实需要两次调用的结果来读取它,但并不真正需要请求的 mapto 设备信息。
-
您的模式已经很有意义且直截了当,可以考虑使用 forkjoin 并在末尾添加结果数组 learnrxjs.io/operators/combination/forkjoin.html
标签: promise rxjs rxjs5 redux-observable