web-dev-qa-db-ja.com

非同期関数でエラーをスローできますか?

使っています async/await私のNode.jsプロジェクト。そして、いくつかの場所では、async関数からエラーを返す必要があります。私がプロミスを使用するなら、私はこの方法でそれを達成することができます:

function promiseFunc() {
  return new Promise((res, rej) => {
    return rej(new Error('some error'))
  })
}

しかし、私はasync関数を使用しているため、resおよびrejメソッドはありません。だから、質問:throw関数でasyncエラーはありますか?それとも良い/悪い習慣と考えられていますか?

私がやりたいことの例:

async function asyncFunc() {
  throw new Error('some another error')
}

次のように書き換えることもできます。

async function anotherAsyncFunc() {
  return Promise.reject(new Error('we need more errors!'))
}

しかし、最初の方が私にはより明確に見え、どちらを使うべきかわかりません。

8
serge1peshcoff

私はします:

_async function asyncFunc() {
  try {
    await somePromise();
  } catch (error) {
    throw new Error(error);
  }
}
_

しかし、個人的な好みになると思いますか?常にPromise.reject(new Error(error));を返すことができます。

9
Paulooze