我希望我的應用程序知道異步操作何時被觸發以及何時完成。原因是我希望我的應用程序的整體狀態爲loading
,當所有的異步操作都完成時它將設置爲true
。早期實施這個過程使用全球計數器進行回調。Redux Thunk操作和共享狀態
這些操作可能位於不同的文件中,並且可能由單獨的減速器監聽,負責不同的狀態分支。
我使用thunk-middleware
用我的行動異步如此redux-promise-middleware
一個組合可能是這樣的:
export const requestSiteData =() => (dispatch, getState, api) => {
const url = '/endpoint';
return dispatch({
type: 'STATE_BRANCH/REQUEST_SOME_DATA',
payload: api.fetch(url)
}).catch(() => {});
};
這則派遣STATE_BRANCH/REQUEST_SOME_DATA_FULFILLED
或STATE_BRANCH/REQUEST_SOME_DATA_REJECTED
時完成。
由於承諾中間件,我發現很難攔截該調用並計算/確定有多少個Ajax請求已完成,有多少已完成,因爲這些操作是預先確定的,我無法調度其他操作從我的減速器。
我可以在那裏更新狀態,但異步操作可能會跨狀態樹的幾個部分分開,所以我沒有一個整體位置來管理請求。
有沒有人有任何想法,我可能會去解決這類問題。如果描述/用例不清楚,請大聲呼喊。
你可以使用'''終極版middleware'''這個? http://redux.js.org/docs/advanced/Middleware.html –
他已經在爲此使用redux中間件。 redux-thunk和redux-promise都是中間件。 – therewillbecode