Redux documentation表示要执行异步调用 - 这通常涉及指示异步调用开始的操作,以及稍后指示其完成的操作 - 我应该使用"thunk"中间件 . 这允许我像这样写"actions creators":

function fetchPosts(reddit) {
  return dispatch => {
    dispatch(requestPosts(reddit))
    return fetch(`http://www.reddit.com/r/${reddit}.json`)
      .then(response => response.json())
      .then(json => dispatch(receivePosts(reddit, json)))
  }
}

(这里 requestPostsreceivePosts 是动作创作者 . )

thunk 中间件允许我调度 fetchPosts 的(函数)输出,例如,

store.dispatch(fetchPosts('reactjs')).then(() =>
  ...

但为什么要涉及中间件呢?为什么这比使用全局存储编写自己的 fetchPost 函数更好,如下所示:

function fetchPosts(reddit) {
  store.dispatch(requestPosts(reddit));
  return fetch(`http://www.reddit.com/r/${reddit}.json`)
      .then(response => response.json())
      .then(json => store.dispatch(receivePosts(reddit, json)))
  }
}

显然,我不能 dispatch 这个功能,但这似乎并不十分重要 . 我错过了什么?