提取API不显示JSON数据

时间:2019-06-27 17:36:13

标签: react-native fetch

我相对较新,以响应本机并尝试构建应用程序,并且正在使用fetch API尝试从api获取json文件。我的问题是,当我调用api时似乎没有任何响应。

这是包含提取调用的函数

export const fetchData = url => {
    return async dispatch => {
        dispatch(fetchingRequest());
        try {
          let response = await fetch(url);
          let json = response.json();
          console.log(json);
          dispatch(fetchingSuccess(json));
        } catch (error) {
          dispatch(fetchingFailure(error));
        }
      };
    };

当我检入Chrome调试器时,console.log(json)没有出现。

如果需要引用该URL,我使用https://randomuser.me/api/

在我的其他组件之一中调用了此函数。我还使用reduxredux-thunk将数据存储在JSON文件中。

编辑于:

我相信问题在于函数在调用时没有被执行。

我导入函数和所有redux这样的动作

import {
  fetchingSuccess,
  fetchingRequest,
  fetchingFailure,
  fetchData
} from "../data/redux/actions/appActions.js";

然后在这样编写的fetchData函数中调用_onPress函数

_onPress = () => {
    let url = "https://randomuser.me/api/?results=10"
    fetchData(url);
    console.log("should have fetched");
};

在控制台中,预期输出应为

JSON contents or error // logged when fetchData is called
should have fetched // logged from _onPress

但控制台输出

should have fetched // logged from _onPress

1 个答案:

答案 0 :(得分:1)

问题是response.json()返回一个promise,所以当您这样做:

let json = response.json();

如果没有等待,那么之后的日志仍然是一个保证,为了使其正常工作,您必须在response.json()前面添加等待:

let json = await response.json();
  

Body mixin的 json()方法获取响应流并读取   它完成。它返回承诺,并最终解决问题   将正文文本解析为JSON的方法。