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

106
Vistas
Axios en una función de firebase que devuelve una promesa pendiente incluso dentro de dos bloques async/await

Tengo un problema de sincronización/espera (lo sé, lo sé) que no tiene sentido para mí. Estoy declarando ambas funciones (hijo y HOF) como asíncronas, y estoy esperando los resultados devueltos antes de intentar registrarlos en la consola. Sorpresa sorpresa, me pongo pendiente. La función se bloquea durante 60 segundos y se agota el tiempo de espera (por lo que parece que incluso mi método runWith timeout no funciona. También intenté registrar un simple "aquí" justo antes de declarar const fetchData , pero tampoco se registró. Y, sin embargo, el registro de la consola después en realidad llamar al fn hace...

 exports.getBitcoinPrice = functions .region("europe-west1") .runWith({ timeoutSeconds: 5 }) .https.onRequest(async (req, res) => { const fetchData = async () => { return await axios .get("https://api.coindesk.com/v1/bpi/currentprice.json", { timeout: 2000, }) .then((res) => res.json()) .catch((error) => console.log(error)); }; const data = await fetchData(); console.log(await data); return null; });

Quería usar fetch pero aparentemente node-fetch no funciona bien con firebase.

Intentaré proporcionar una lista de las muchas publicaciones y artículos de SO que he leído sobre async/await. Investigué y probé todas sus implementaciones, pero aún no puedo resolverlo.

El formato de desbordamiento de pila no funciona, así que:

Axios devuelve la promesa pendiente async/await return Promise { <pending> } ¿Por qué mi función asincrónica devuelve Promise { <pending> } en lugar de un valor? Async/await return Promise<pendiente> https://github.com/Keyang/node-csvtojson/issues/278 https://www.reddit.com/r/Firebase/comments/h90s0u/call_external_api_from_cloud_function/

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

0

Está utilizando demasiadas await en su código.
Si desea usar await en la función fetchData , debe devolver una Promise y manejarla fuera.

Intenta cambiar tu código así:

 exports.getBitcoinPrice = functions .region("europe-west1") .runWith({ timeoutSeconds: 5 }) .https.onRequest(async (req, res) => { const fetchData = () => { return axios .get("https://api.coindesk.com/v1/bpi/currentprice.json", { timeout: 2000, }) }; try { const { data } = await fetchData(); console.log(data); } catch (err) { console.log(err) } return null; });
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