前端如何优雅的书写请求回调?

发布于 2022-09-12 03:10:10 字数 420 浏览 15 评论 0

// 表单提交
async function formSubmit(form) {
  let response = await Http_request({
    ...form
  });
  if (response.code < 0) {
    this.error(response.code); // 错误消息提示
    // ... 错误处理
  } else {
    this.success(response.code); // 成功消息提示
    // ... 成功处理
  }
}

怎样避免总是出现if(response){...}else{...}这种略显笨拙的写法。因为当一个文件内有好几个请求,每个请求内部的错误处理和成功处理都做着基本没有太大差异的工作的时候,我每次都要重复这种无聊的写法,这很痛苦。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(4

酒浓于脸红 2022-09-19 03:10:10
const onResponse = ({ code }) =>
  code < 0 ? this.error(code) : this.success(code);
  
const handleRes = (thenable, onResponse) =>
  thenable.then(onResponse).catch(console.log);

async function formSubmit() {
  await handleRes(
    Http_request({
      ...form,
    }),
    onResponse
  );
}

局部处理可以自己写类似的工具函数。全局处理可以考虑借鉴楼上大佬的思路在 axios 的拦截器统一处理,当然这一部分涉及全局拦截,所以要和团队协调好,不过看你没有 try...catch 应该是拦截器里有人在拦截器里做过了部分异常捕获。

残花月 2022-09-19 03:10:10

请求工具里做拦截啊

囍笑 2022-09-19 03:10:10

image.png

毁我热情 2022-09-19 03:10:10

公共的逻辑封起来,全局调用

function test(response) {
    if (response.code < 0) {
        this.error(response.code); // 错误消息提示
        // ... 错误处理
    } else {
        this.success(response.code); // 成功消息提示
        // ... 成功处理
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文