码字,杂谈

js 中优雅的捕获 await 的异常

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

前置知识:

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

两个版本,可以直接使用,跟 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];
    });
}
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注