rob*_*ten 2 rxjs reactjs redux redux-observable
首先是这个很棒的图书馆的许多道具!我仍然在努力使用一个用例.我想首先打电话给另一部史诗并等到它完成然后继续当前的史诗.假设我有一个用户可以更改内容的表单.在将其他数据加载到表单之前,我想先保存当前更改.有什么想法吗?
听起来像你想要的:如果一部史诗想开始另一部史诗作品并等待它继续完成.
一种方法是(使用伪名称),当接收到初始动作时,LOAD_OTHER_DATA您立即开始侦听单个SAVE_FORM_FULFILLED,这表示表单已被保存(我们将稍微启动它).收到后,我们mergeMap(或者switchMap,在这种情况下无关紧要)进入我们调用加载其他数据loadOtherDataSomehow()并执行常规业务.最后,开始实际保存我们正在等待的表单的技巧是startWith()在整个链的末尾添加一个- 它将发出和分派动作以实际保存表单.
const saveFormEpic = (action$, store) =>
action$
.ofType('SAVE_FORM')
.switchMap(() =>
saveFormSomeHow(store.getState().formDataSomewhere)
.map(details => ({
type: 'SAVE_FORM_FULFILLED'
}))
);
const loadOtherDataEpic = action$ =>
action$
.ofType('LOAD_OTHER_DATA')
.switchMap(() =>
action$.ofType('SAVE_FORM_FULFILLED')
.take(1) // don't listen forever! IMPORTANT!
.mergeMap(() =>
loadOtherDataSomeHow()
.map(otherData => ({
type: 'LOAD_OTHER_DATA_FULFILLED',
payload: otherData
}))
)
.startWith({
type: 'SAVE_FORM'
})
);
Run Code Online (Sandbox Code Playgroud)
你没有提到你的加载和保存是如何工作的,所以这只是伪代码,你需要修改你的用例.
| 归档时间: |
|
| 查看次数: |
998 次 |
| 最近记录: |