Soy un poco nuevo en async/await en javascript porque he usado funcionalidades de suspensión en Kotlin antes. ¿Hay alguna forma de esperar y detectar un error en js? (sin escribir try catch). Si no, ¿cuál es la forma correcta de hacer esto?
Por ejemplo, considere este fragmento, la función asíncrona a :
let a = async () => { // does io and returns result } Ahora, considere una función b que llama a . ¿Puedo escribirlo de esta manera clara:
let a = async () => { const result_of_a = (await a()).catch(() => { // handle error }) // work with `result_of_a` }Más bien que
let a = async () => { var result_of_a = null try { result_of_a = await a() } catch (e) { } // work with `result_of_a` }¿Hay alguna otra forma bonita de escribir la subrutina anterior?
No creo que puedas. Si cree que .catch es más limpio, tal vez debería usar la sintaxis de promesa. Personalmente uso ambos, dependiendo del contexto. Pero prefiero la sincronización debido a la promesa del infierno .
let asyncFn = async () => { const result = a().then(...).catch(...) }Puedes probar de esta manera:
let b = async () => { const result_of_a = await a().then(()=>{ // handle success response here and return value }, ()=>{ // handle success response here and return value you want } ) // You will get value return in `result_of_a` }Use catch en una promesa que se devuelve desde su función. Mezclaste dos enfoques diferentes.