Redux-Thunk:异步调度不起作用

时间:2019-07-01 14:12:07

标签: javascript react-native redux redux-thunk

我正在尝试在react native中构建一个应用程序,该应用程序假设用户接受两个输入,然后查询api并获取有关两个输入的信息。我在使用reduxredux-thunk,特别是async的操作时遇到了麻烦。

这是我的应用程序中我特别遇到问题的代码

export const fetchData = url => {
  console.log("start Fetching");
  return async dispatch => { // this is where the problem is
    dispatch(fetchingRequest());
    try {
      const response = await fetch("https://randomuser.me/api/?results=10");
      const json = await response.text();
      if (response.ok) {
        dispatch(fetchingSuccess(json));
        console.log("JSON", json);
      } else {
        console.log("fetch did not resolve");
      }
    } catch (error) {
      dispatch(fetchingFailure(error));
    }
  };
  console.log("Fetched data");
};

调试该函数后,我发现发现,当调用fetchData函数时,该函数将执行,但是返回的async dispatch具有undefined行为。

调用该函数时,调试器中的输出应为

start Fetching
JSON file information/Error

但是调试器中的输出实际上是

start Fetching

1 个答案:

答案 0 :(得分:0)

为什么不简单地使用Promise语法?

  fetch("https://randomuser.me/api/?results=10")
    .then(response => {
      if (response.ok) {
        // do something
      }
    })
    .catch(e => console.log('fetch did not resolve'));