web-dev-qa-db-fra.com

Puis-je envoyer une erreur dans une fonction asynchrone?

J'utilise async/await dans mon projet Node.js. Et dans certains endroits, je dois retourner une erreur de la fonction async. Si j'avais utilisé des promesses, j'aurais pu le faire de cette façon:

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

Mais j'utilise la fonction async, donc aucune méthode res et rej n'est là. Donc, la question: puis-je throw des erreurs dans les fonctions async? Ou est-ce considéré comme une bonne/mauvaise pratique?

Un exemple de ce que je veux faire:

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

Je peux aussi le réécrire de cette façon:

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

mais le premier me semble plus clair et je ne sais pas lequel utiliser.

8
serge1peshcoff

Je ferais:

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

Mais je pense qu'il s'agit de préférence personnelle, je suppose? Vous pouvez toujours renvoyer Promise.reject(new Error(error));.

9
Paulooze