我相对较新,以响应本机并尝试构建应用程序,并且正在使用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/
。
在我的其他组件之一中调用了此函数。我还使用redux
和redux-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
答案 0 :(得分:1)
问题是response.json()返回一个promise,所以当您这样做:
let json = response.json();
如果没有等待,那么之后的日志仍然是一个保证,为了使其正常工作,您必须在response.json()前面添加等待:
let json = await response.json();
Body mixin的 json()方法获取响应流并读取 它完成。它返回承诺,并最终解决问题 将正文文本解析为JSON的方法。