Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

215
Vistas
¿Es posible hacer que este código use await/async en lugar de promesas?

Tengo esta función existente, que funciona bien:

 const fetchWrapper = (resource, init) => { console.log('About to fetch...', resource) const p = fetch(resource, init) p.then( (response) => { console.log('The response is:', response) }, (error) => { console.log('The error is:', error) } ) return p }

Intento usar async/await siempre que sea posible. Sin embargo, estoy pensando que en realidad no es posible hacerlo. El problema principal es que quiero devolver la promesa devuelta por fetch() , para que la función de llamada pueda await como lo haría normalmente.

Pero también quiero que sucedan cosas adicionales justo antes de llamar a fetch() (esa es la parte fácil) y luego inmediatamente después de una respuesta de la red.

Para hacer eso, adjunto dos devoluciones de llamada (respuesta y error) a la promesa devuelta por fetch() .

Si no tuviera que usar promesas, tendría que await la llamada fetch() , pero entonces la persona que llama no recibirá la respuesta hasta que se resuelva la promesa, que no es lo que quiero.

Entonces... ¿es posible convertir este código en async/await completo?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

El siguiente código, que usa async y await, hace lo mismo que su código:

 // A simple promise response const mockFetch = async (resource, init) => 'Response' const fetchWrapper = async (resource, init) => { console.log('About to fetch...', resource) // You'll replace 'mockFetch' with 'fetch' const p = mockFetch(resource, init); // You can use a named function instead (async () => { try { const response = await p console.log('The response is:', response) } catch (error) { console.log('The error is:', error) } })() return p } (async () => { const response = await fetchWrapper('', {}) console.log(response) })()

mockFetch es para fines de demostración, deberá eliminar y reemplazar const p = mockFetch(resource, init); con const p = fetch(resource, init);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Tal vez algo como esto:

 const fetchWrapper = async (resource, init) => { try { const response = await fetch(resource, init); console.log('The response is:', response); return { success: true, response }; } catch(error) { console.log('The error is:', error); return { success: false, error }; } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Para omitir el uso de .then() / .catch() podría optar por esto:

 const fetchWrapper = (resource, init) => { // do stuff before fetch here ^^ // ... // call the fetch const p = fetch(resource, init) const afterFetchEffects = async () => { // since it is "detached" (i call it like so..) // you should ofc use try/catch try { // wait for the fetch() to finish await p // do some stuff after fetch // ... } catch(err) { console.error('Error in detached after fetch promise..', err) } } // execute the wrapper which executes something after the fetch.. // do not await it then it will do its own business. afterFetchEffects() // pass fetch immediatly back return p }

No estoy seguro de qué enfoque es más legible ^^

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda