# 异步数据流
如果不使用 [middleware](#) 的话,Redux 的 store 只支持 [同步数据流](#)。而这也是 [`createStore()`](#) 所默认提供的创建方式。
你可以使用 [`applyMiddleware()`](#) 来增强 [`createStore()`](#)。这不是必须的,但它可以让你 [以更简便的方式来描述异步的 action](#)。
像 [redux-thunk](https://github.com/gaearon/redux-thunk) 或 [redux-promise](https://github.com/acdlite/redux-promise) 这样支持异步的 middleware 都包装了 store 的 [`dispatch()`](#) 方法,以此来让你 dispatch 一些除了 action 以外的其他内容,例如:函数或者 Promise。你所使用的任何 middleware 都可以以自己的方式解释你 dispatch 的任何内容,并继续传递 actions 给下一个 middleware。比如,一个 Promise middleware 能够 Promise,然后针对每个 Promise 异步地 dispatch 一对 begin/end actions。
当 middleware 链中的最后一个 middleware dispatch action 时,这个 action 必须是一个普通对象。这是 [同步式的 Redux 数据流](#) 开始的地方(译注:这里应该是指,你可以使用任意多异步的 middleware 去做你想做的事情,但是需要使用普通对象作为最后一个被 dispatch 的 action ,来将处理流程带回同步方式)。
### 下一步
现在你已经学完 Redux 数据流的全部内容!可以查看 [异步示例源码](#),或者继续阅读 [集成 React Router](#)。