# 異步數據流
默認情況下,[`createStore()`](../api/createStore.md) 所創建的 Redux store 沒有使用 [middleware](Middleware.md),所以只支持 [同步數據流](../basics/DataFlow.md)。
你可以使用 [`applyMiddleware()`](../api/applyMiddleware.md) 來增強 [`createStore()`](../api/createStore.md)。雖然這不是必須的,但是它可以幫助你[用簡便的方式來描述異步的 action](AsyncActions.md)。
像 [redux-thunk](https://github.com/gaearon/redux-thunk) 或 [redux-promise](https://github.com/acdlite/redux-promise) 這樣支持異步的 middleware 都包裝了 store 的 [`dispatch()`](../api/Store.md#dispatch) 方法,以此來讓你 dispatch 一些除了 action 以外的其他內容,例如:函數或者 Promise。你所使用的任何 middleware 都可以以自己的方式解析你 dispatch 的任何內容,并繼續傳遞 actions 給下一個 middleware。比如,支持 Promise 的 middleware 能夠攔截 Promise,然后為每個 Promise 異步地 dispatch 一對 begin/end actions。
當 middleware 鏈中的最后一個 middleware 開始 dispatch action 時,這個 action 必須是一個普通對象。這是 [同步式的 Redux 數據流](../basics/DataFlow.md) 開始的地方(譯注:這里應該是指,你可以使用任意多異步的 middleware 去做你想做的事情,但是需要使用普通對象作為最后一個被 dispatch 的 action ,來將處理流程帶回同步方式)。
接著可以查看 [異步示例的完整源碼](ExampleRedditAPI.md)。
## 下一步
現在通過例子你對 middleware 在 Redux 中作用有了初步了解,是時候應用到實際開發中并自定義 middleware 了。繼續閱讀關于 [Middleware](Middleware.md) 的詳細章節。
- 自述
- 介紹
- 動機
- 核心概念
- 三大原則
- 先前技術
- 學習資源
- 生態系統
- 示例
- 基礎
- Action
- Reducer
- Store
- 數據流
- 搭配 React
- 示例:Todo List
- 高級
- 異步 Action
- 異步數據流
- Middleware
- 搭配 React Router
- 示例:Reddit API
- 下一步
- 技巧
- 配置 Store
- 遷移到 Redux
- 使用對象展開運算符
- 減少樣板代碼
- 服務端渲染
- 編寫測試
- 計算衍生數據
- 實現撤銷重做
- 子應用隔離
- 組織 Reducer
- Reducer 基礎概念
- Reducer 基礎結構
- Reducer 邏輯拆分
- Reducer 重構示例
- combineReducers 用法
- combineReducers 進階
- State 范式化
- 管理范式化數據
- Reducer 邏輯復用
- 不可變更新模式
- 初始化 State
- 結合 Immutable.JS 使用 Redux
- 常見問題
- 綜合
- Reducer
- 組織 State
- 創建 Store
- Action
- 不可變數據
- 代碼結構
- 性能
- 設計哲學
- React Redux
- 其它
- 排錯
- 詞匯表
- API 文檔
- createStore
- Store
- combineReducers
- applyMiddleware
- bindActionCreators
- compose
- react-redux 文檔
- API
- 排錯