axios 接口封装已经使用了async await?在页面调用的时候还用使用async await吗?
axios 接口封装已经使用了async await?在页面调用的时候还用使用async await吗?这种再写一次async,await是有意义的吗,求指教?
const result = await this.$post("logistics/sale/area.action"
async function post<T>(url: string, data?: any, config?: any): Promise<T> {
try {
return await instance({
...config,
method: "POST",
url: config && config.intact ? url : API_URL + url,
data
});
} catch (error) {
console.log(error);
return Promise.reject(error);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
async
标记当前函数是异步函数,内部支持await
等待异步执行。返回值是Promise
实例。所以你这样封装之后,外面使用封装后的函数时仍然需要
async
/await
。这样做有没有意义要看你怎么封装。一般来说,封装要发挥作用,至少要处理常见错误、提取真实数据,等。类似问题中这样不封装也罢。async/await只是语法糖,如果你想在你的代码中使用await,你就必须把你的函数定义为async,和你调用其他库比如axios无关,只和你自己的代码有关,也和其他库是否使用async/await无关,其他库只需要返回Promise或者可以转成Promise就可以,不管是否是async方法,只要返回Promise,你都可以await它。
所以你这个问题,和axios是否使用async/await无关,你是否再封装一层,要看你是否在这层中做了更多的处理,比如url: config && config.intact ? url : API_URL + url等,如果觉得大家为了重用这句代码再封装一层有价值,那就封装,至于是否用async/await,就看你是否想用await,如果你不想用await,可以不用async,直接用Promise.then去处理,你想用await的话,就得写async.