2017-03-16 19 views
6

对于可重复观测量,rxjs和可观测量来说很新颖。想知道我怎么可以处理另一个动作,说“ActionTwo”在同一个史诗如何在一个史诗中处理多种动作类型?任何做同样的缺点?

const Epic1 = (action$,store) => { 
return action$.ofType('ActionOne') 
.mergeMap((action) => { 
     return ajax({'method': 'GET', 'url': 'someUrl') 
     .map(response => resultActoin(action.userId, response.response)); 


     } 
); 
} 

喜欢的东西

const Epic1 = (action$){ 
    if('ActionOne') make a API call. 
    if('ActionTwo') make some other API call. 
    else do nothing. 

} 

回答

12

它是相同的API调用?如果是这样,ofType()接受多种类型。你可以做action$.ofType('ActionOne', 'ActionTwo')

如果您想向另一个API/URL发出请求,我会建议制作另一个史诗。你可以“合并”你所有的史诗与combineEpics看到:https://redux-observable.js.org/docs/basics/SettingUpTheMiddleware.html

+2

^^^这。几乎总是有更好的一个史诗每个任务 – jayphelps

+0

知道combineEpics,试图处理一个史诗中的多个行动。 你能否介绍一下为什么史诗/动作是一个很好的设计?除了代码可维护性? –

+0

这只是关于可维护性。原因是一样的,为什么你有多个文件和模块。它有助于扩展和推理您的应用程序,几乎没有任何缺点。此外,它使得重构更容易,并且创建动作流。 –

相关问题