#说明

各种对于Promise操作的封装

笔记分享:hongjilin

一、对Promise返回值进行加工

传入Primise对象,然后对不同状态的返回值进行格式修改

Ⅰ-代码示例

  1. /**
  2. * @param { Promise } thePromise --必选项:传入一个Promise对象
  3. * @param { Object= } errorExt - 可以传递给err对象的附加信息
  4. * @return { Promise }
  5. */
  6. export function resToArray<T, U = Error>(
  7. thePromise: Promise<T>,
  8. errorExt?: object
  9. ): Promise<[U | null, T | undefined]> {
  10. return thePromise //此处是传入的promise对象
  11. .then<[null, T]>((data: T) => [null, data]) //当成功时,将结果构造出数组的形式,第一个数据时错误信息
  12. .catch<[U, undefined]>((err: U) => { //当失败时,将结果构造成数组的形式
  13. if (errorExt) Object.assign(err, errorExt);
  14. return [err, undefined];
  15. });
  16. }
  17. export default resToArray;

Ⅱ-使用示例

  1. import resToArray from '~/utils';
  2. const [err, response] = await resToArray<any>( axios({...}));