javascript - Reactjs:用 axios 做一个函数来承诺
问题描述
我的上下文提供程序中有这个函数我希望它返回一个承诺,以便我可以从axios访问返回的数据
const sendRquest =(service,data,method,url)=>{
let base = api.find(item => item.name ===service )
let config = {
method: method,
url: `${base.url}/${url}`,
headers: {
'x-clientId': clientId,
'Content-Type': 'application/json',
},
data: data
};
axios(config)
.then(function (res) {
return res
})
.catch(function (error) {
return error
});
}
我正在寻找的结果是在需要时在每个其他组件中编写这样的代码
sendRquest('usermanagement',data,'post','foo/bar').then(res=>console.log(res.data)).catch(err=>console.log(err))
解决方案
你必须回报承诺。
就像是
const sendRquest =(service,data,method,url)=>{
let base = api.find(item => item.name ===service )
let config = {
method: method,
url: `${base.url}/${url}`,
headers: {
'x-clientId': clientId,
'Content-Type': 'application/json',
},
data: data
};
return axios(config)
.then(function (res) {
return res
})
.catch(function (error) {
return error
});
}
请小心,因为您正在通过.catch
这样的使用“吞下”错误。返回的承诺sendRquest
永远不会“失败”(拒绝),但会成功(解决)数据或错误有效负载。
推荐阅读
- csv - azure ADF - 从查找活动中获取 .csv 文件的字段列表
- java - CardView 显示白色居中布局
- xcode - Xcode 11:添加文档不包括退货
- android - 从 Firestore 检索后写回原始位置
- c# - 使用 Microsoft.Data.Sqlite C# 获取最后一个插入 rowid
- c# - Attribute.GetCustomAttributes 和 MemberInfo.GetCustomAttributes 可以互换吗?
- android - 在 RecyclerView 中连续显示来自 Firestore 的数据
- javascript - AOS 库不工作,除了刷新
- python - Python 在包中导入其他函数
- c++ - char 数组 C++ 元音