关于javascript:Js不使用try-catch优雅地处理await报错的情况

const res = await jiekou(params);
if(res.code === 0) {
//执行代码
} else {
// 错误处理
}

相似场景景:如果jiekou报500,那不会走到上面的if判断,那相应的代码都不会执行。


解决形式:

// 写一个办法去执行本来的操作,如果有谬误返回[err],没有谬误返回[null, res]
function getAwaitResult(promise) {
   return promise.then(res => {
      return [null, res];
   })
   .catch(err => [err]);
}

应用

const [err, res] = await getAwaitResult(jiekou(params));
if (err) {
  // 例如此处须要不显示loading
  this.loading = false;
  this.$message.error(String(err));
  return;
}
// 前面执行res的失常操作就好
if (res.code === 0) {
  this.imageList = res.data.list;
  this.total = res.data.total;
} else {
  this.$message.error(res.msg);
}            

参考:https://blog.grossman.io/how-…

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理