Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

460
Views
El valor de retorno de Javascript async/await no está definido, ¿por qué?

Tengo una función que publica datos a través de una API. Quiero devolver la respuesta... Estoy siguiendo tutoriales en línea para tratar de entender async/await, y la forma en que lo tengo ahora me parece correcta.

Puedo imprimir dentro de la declaración postAsset.then, pero el valor de retorno siempre está indefinido. Eso es lo que pensé que esperaba arreglado, ¿no estoy seguro de por qué todavía no está definido en este caso?

 const postAsset = async (assetToPost) => { let token = await retrieveToken() if (token !== undefined && token !== 'Error') { const config = { headers: { Authorization: `Bearer ${token}` } }; let urlAssets = `${API_ROUTE}${ASSETS.ASSETS_API_URL}` axios .post(urlAssets, assetToPost, config) .then(function (response) { let assetId = response.data return assetId }) .catch(function (error) { console.log('POSTING ASSET ERROR: ', error.message); return -1 }) } } const postData = async () => { // post asset, get id response. // then post beacons in loop, get id response for each // then post a beaconId as part of assetId let assetId = await postAsset(asset) console.log(assetId) }
about 4 years ago · Santiago Gelvez
3 answers
Answer question

0

Porque está usando .then y no .then , lo await funcionaría si devolviera la promesa que recibió, pero no lo hace.

Solución 1:

Devuelve la promesa que obtienes de axios.post (agrega return delante):

 return axios .post(...) .then(...)

Solución 2 (mejor):

No mezcle .then con async / await , en su lugar solo use async / await :

 try { const response = await axios.post(urlAssets, assetToPost, config) return response.assetId } catch (error) { console.log('POSTING ASSET ERROR:', error) return -1 }

(Por cierto, cambié error.message a solo error para que no pierdas la información importante de la pila).

about 4 years ago · Santiago Gelvez Report

0

la función postAsset debe devolver una promesa, y dentro de la promesa debe ejecutar la llamada axios.post

about 4 years ago · Santiago Gelvez Report

0

Está devolviendo su assetId de la llamada axios pero no devolviendo nada del método postAsset .
Simplemente agregue la palabra clave de return antes de llamar a axios . Funcionará.

 return axios .post(urlAssets, assetToPost, config) .then(function (response) { let assetId = response.data return assetId }) .catch(function (error) { console.log('POSTING ASSET ERROR: ', error.message); return -1 })
about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!