Leí un subproceso SO en algún lugar hace un tiempo que usaba métodos estáticos de Promise como Promise.resolve() o Promise.reject() dentro de una función async son anti-patrones pero parece que no puedo encontrarlo.
Dado lo siguiente:
const asyncFunc = async (foo) => { if (foo) return Promise.resolve() return Promise.reject() }¿Se considera esto un antipatrón?
El uso Promise.resolve quizás no sea tanto un antipatrón como algo completamente innecesario , porque devolver un valor simple de una función asíncrona dará como resultado que Promise devuelva la resolución de ese valor.
if (foo) return Promise.resolve()es equivalente a
if (foo) return;y
if (foo) return Promise.resolve(5)es equivalente a
if (foo) return 5; Por lo tanto, también puede Promise.resolve .
Promise.reject es un poco diferente. Si desea rechazar la Promesa que devuelve la función, puede throw <expression> , o puede return Promise.reject<expression> - ambos son equivalentes, y no creo que haya ninguna razón concreta para preferir uno o el otro en todas las circunstancias (aunque prefiero throw ya que es más conciso).