Promise封装公共方法的小技巧,无需try...catch

Promise封装公共方法的小技巧,无需try…catch

在日常的开发过程当中,我们经常会将一些公共的处理逻辑使用promise进行封装,再配合async、await进行使用

我们知道,await后面的promise如果失败的话,会抛出错误,所以我们需要在使用的时候,进行try…catch来处理异常,每次都写try…catch比较麻烦,这里有一个简单的小技巧,可以不用写try…catch

可以在封装公共函数的时候,在return时先进行一次then和catch方法,返回一个数组,存放了错误和结果,这样promise错误,会先进入catch当中,由catch进行处理,处理完成之后,再到我们调用的地方,我们在调用时就无需进行try…catch了

const commonHandler = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      // resolve("成功");
      reject("失败");
    }, 1000);
  }).then((res) => {
    // 成功相关的处理逻辑...
    return [null, res];
  }).catch((err) => {
    // 失败相关的处理逻辑...
    return [err, null];
  });
};

const main = async () => {
  let [error, result] = await commonHandler();
  // 进行判断,存在error,则return,不进行下面的逻辑
  if (error) { return alert("promise失败"); }

  // error不存在,则进行进行下面的逻辑
  console.log(result);
};
main();

简写形式:

const commonHandler = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject("失败");
    }, 1000);
  }).then(res => [null, res]).catch(err => [err, null]);
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值