axios 能否直接return
场景: 接口返回的数据是下拉框需要的数据
// 封装字典
export async function dictionaries(para) {
let rData = []
await axios.get(`/api/admin/dict/type/${para}`)
.then(res => {
rData = res.data.data
})
.catch(err => {
rData = []
})
return rData
}
// 调用
dictionaries('card_type').then(v => {
console.log(v)
})
这样封装好返回的参数我只能通过.then 去拿到parmise的返回值
这样写很麻烦 我要创建许多变量在.then里接收并赋值
有什么好办法能直接拿到 类似于 dictionaries () {return data} 调用方法可以直接拿到返回值
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
看了其他问题之后,我理解是有多个字典列表需要显示出来,所以需要请求多次
dictionaries
。我提供下我的思路:”把字典列表“封装为组件,组件内部请求数据并渲染列表,因为组件是可以复用的,就不需要考虑多次调用和变量问题。
你是不是想要这个样子?
data1,data2 就是处理过后then里面的值。
axios是基于promise封装的,所以他需要.then来接收数据,而async /await 是生成器的语法糖,await后面跟的是一个promise,对promise操作后直接返回异步请求后的数据。
//封装
//调用
因为直接打印出来的话是返回一个Promise,所以需要then处理后才能正常返回数据
你在外面也直接 async-await 调用 dictionaries 这个方法不就好了。
同上所说的
直接封
整个axios运行是基于promise链式使用的。
意味着你可以在promise链中处理 请求异常与请求结果。
axios.interceptors.request
axios.interceptors.response
基于业务需求在对应的注入点加上前置处理与后置处理。
这样写就可以了