2017-03-16 30 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

這只是關於可維護性。原因是一樣的,爲什麼你有多個文件和模塊。它有助於擴展和推理您的應用程序,幾乎沒有任何缺點。此外,它使得重構更容易,並且創建動作流。 –

相關問題