axios 接口封装已经使用了async await?在页面调用的时候还用使用async await吗?

发布于 2022-09-11 23:42:28 字数 540 浏览 14 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

稀香 2022-09-18 23:42:28

async 标记当前函数是异步函数,内部支持 await 等待异步执行。返回值是 Promise 实例。

所以你这样封装之后,外面使用封装后的函数时仍然需要 async/await。这样做有没有意义要看你怎么封装。一般来说,封装要发挥作用,至少要处理常见错误、提取真实数据,等。类似问题中这样不封装也罢。

给妤﹃绝世温柔 2022-09-18 23:42:28

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文