【Promise篇】- 1、promise返回结果优化

95 阅读1分钟

对下面代码进行优化

const promise = async () => {
  return new Promise((resolve, reject) => {
    fetch('xxx')
    .then(res => {
      resolve(res);
    })
    .catch(err => {
      reject(err)
    })
  });
}

try {
  const res = await promise();
  console.log(res);
} catch (err) {
  console.log(err);
}

promise()
  .then(res => {
    console.log(res);
  })
  .catch(err => {
    console.log(err);
  });

上面两种获取promise结果的方式都不够优雅,可以封装一个函数来返回promise的结果,可以这样优化:

const [res, err] = await getPromiseResult(promise());

实现getPromiseResult有两种方式。

方式一:

const getPromiseResult = async (promise) => {
  return promise
    .then(res => [res, undefined])
    .catch(err => [undefined, err]);
}

方式二:

const getPromiseResult = async (promise) => {
  try {
    const res = await promise;
    return [res, undefined];
  } catch (err) {
    return [undefined, err];
  }
}