从 Axios 请求触发时,React 组件中的异步函数不起作用



network.services.js

axiosCall = (axiosURL) => {
// const axiosURL = "https://api.github.com/user"
axios.get(axiosURL, {
headers: {
'Authorization': `qwdvryjutmnevw`,
}
}).then((res) => {
console.log(res.data);
return res.data;
}).catch((error) => {
throw error.message;
// console.error(error);
// toast.error(error.message);
})
}

component.js

const getData = async () => {
const asyncExample = async () => {
const result = await networkServices.axiosCall("/api/v1/calendars");

const responseData = await result;
console.log(responseData);
return responseData;
}
const data = asyncExample()
data.then(function(result) {
console.log(result); // "Some User token"
})
}

在const结果中,试图将数据从服务获取到我的组件,控制台表单服务正在合并数据,但组件总是返回未定义的数据,而不是服务文件中的数据。SetTimeout函数在组件中也不起作用。

您有很多错误。我建议您查看有关Promises 的文档

第一个:

axiosCall中不返回数据返回数据的方法:

axiosCall = (axiosURL) => new Promise((resolve, reject) => {
axios.get(axiosURL, {
headers: {
'Authorization': `yourTokenHere`,
}
}).then((res) => {
// return a response data
resolve(res.data);
}).catch((error) => {
// return only error message
reject(error.message);
})
})

使用axiosCall:

try {
// don't forgot to configure axios with base url
const data = await axiosCall('/api/v1/calendars');
// do something with your data
} catch (e) {
// do something with error message
console.log(e);
}

第二:

调用异步函数时出错

看看这个例子:

const getData = () => {
networkServices
.axiosCall("/api/v1/calendars")
.then(function(result) {
// when promise resolve
console.log(result);
})
.catch(error => {
// when promise reject
console.log(error)
})
}

相关内容

  • 没有找到相关文章

最新更新