修身养性,知行合一

  • 首页
  • 爱码
    • 系统
    • 数据库
    • JavaScript
    • CSharp
    • Python
  • 生活
    • 文化
    • 美食
  • 杂谈
  • 关于
修身养性,知行合一
码字,杂谈
  1. 首页
  2. 爱码
  3. 正文

js 中优雅的捕获 await 的异常

2020年12月1日 1636点热度 2人点赞 0条评论

看了 await-to-js,不由得佩服大神的思路。看起来很简单,但是有时候很简单的方案就可以解决很看似很复杂的问题。

前置知识:

  • async
  • await
  • Promise

百度一下,基本全是官方文档照抄的内容,我就不超了,有不明白的同学自己去看吧。

两个版本,可以直接使用,跟 npm 下载的一样。

js 版本:

function to(promise, errorExt) {
  return promise
    .then(data => [null, data])
    .catch(err => {
      if (errorExt) {
        Object.assign(err, errorExt);
      }
      return [err, undefined];
    });
}

ts版本:

function to<T, U = any>(
  promise: Promise<T>,
  errorExt?: object
): Promise<[U | null, T | undefined]> {
  return promise
    .then<[null, T]>((data: T) => [null, data])
    .catch<[U, undefined]>(err => {
      if (errorExt) {
        Object.assign(err, errorExt);
      }
      return [err, undefined];
    });
}
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2020年12月1日

jeremyjone

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

最新 热点 随机
最新 热点 随机
我的开源组件 @xpyjs/gantt 100颗星星啦 volar 检查 element 表格的 slot-scope 错误 关于 *.vue 文件中使用 TypeScript 声明类型报错的解决方案 element table 加载时宽度闪烁问题 windows 无法登录便签、OneNote等应用 vue2 中 vuex 对 ts 的支持
volar 检查 element 表格的 slot-scope 错误我的开源组件 @xpyjs/gantt 100颗星星啦
美化PowerShell(含WindowsTerminal和VSCode终端) 让Hyper-v与安卓虚拟机共存 windows 无法登录便签、OneNote等应用 JS的console中log和dir的区别 在 CentOS 上安装 PHP7 TypeError: ObjectId('') is not JSON serializable

(っ•̀ω•́)っ✎⁾⁾ 开心每一天

COPYRIGHT © 2021 jeremyjone.com. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

京ICP备19012859号-1

京公网安备 11010802028585号