await-to-js的源码分析

  • 第一步:clone源码
  • 分析源码目录结构
  - examples
  | - examples-1.js
  - src
  |- await-to-js.ts
  - test
  |- await-to-js.ts
  - tools // 代码打包发布脚本
  |- gh-pages-publish.ts
  |- semantic-release-prepare.ts
  - README.md
  - package.json
  - rollup.config.js // 代码打包文件
  ...
  • 根据package.json,进行包的安装,yarn
  • 通过这个src目录只有一个文件,await-to-js.ts,接下来看看该文件内部怎么写的吧
  1. 解决的一个问题,避免try-catch去抓取错误,使得代码看起来不够优雅,从源码来看,提供一个to方法,基于Promise的一次封装;公有两个参数,一个是promise对象为必填参数,另外一个为errorExt错误配置参数,可选值
  2. then方法后,resole()后成功值,放回的一个成功数组。
  3. catch方法,reject()错误值,返回的一个错误数组。
    • 判断errorExt存在,将errorExt和err进行合并返回。
    • 反之,直接返回[err, undefined]
  function to<T, U = Error> (
    promise: Promise<T>,
    errorExt?: object
  ): Promise<[U, undefined] | [null, T]> {
    return promise
      .then<[null, T]>((data: T) => [null, data])
      .catch<[U, undefined]>((err: U) => {
        if (errorExt) {
          const parsedError = Object.assign({}, err, errorExt);
          return [parsedError, undefined];
        }
        return [err, undefined];
      });
  }

参考资料

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值