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

125
Vistas
Async / Await no funciona con la solicitud http

Intento obtener contenido con una llamada asíncrona y obtengo la respuesta a través de una función asíncrona. ¿Qué tiene de malo esta configuración? ¿El resultado del registro de la consola siempre está indefinido?

 _json: function (callback) { var xobj = new XMLHttpRequest(); xobj.overrideMimeType("application/json"); xobj.open('GET', this.options.url, true); xobj.onreadystatechange = function () { if (xobj.readyState == 4 && xobj.status == "200") { callback(xobj.responseText); } }; xobj.send(null); }, get: async function () { var resp = await this._json(function(response) { return JSON.parse(response); }); console.log(resp); }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Su función _json no es una Promesa. Utiliza un patrón de devolución de llamada común para devolver información de forma asíncrona. Primero debe envolverlo en una Promesa, si desea usar la sintaxis async/await.

 new Promise((resolve) => this._json((response) => resolve(JSON.parse(response)))

Luego puede await y recibir JSON analizado (como espera).

about 4 years ago · Juan Pablo Isaza Denunciar

0

Para usar async / await , necesita saber cuándo usar await en primer lugar. No puedes poner simplemente await delante de algo y esperar que de alguna manera espere algo.

Entonces, ¿cuándo debería usar await o digamos cuándo tiene sentido usarlo?

Una pregunta sencilla:

  1. ¿Su método/función devuelve una Promesa?
    • Sí: puedes poner await delante de él.
    • No: Es inútil usar await

Podemos hacer esa verificación en su problema:

¿ this._json() devuelve una promesa?

En tu caso no . Eso significa que usar await es inútil.

Lo que puedes hacer es devolver una promesa:

 _json: function () { return new Promise((res, rej) => { var xobj = new XMLHttpRequest() xobj.overrideMimeType('application/json') xobj.open('GET', this.options.url, true) xobj.onreadystatechange = function () { if (xobj.readyState == 4 && xobj.status === 200) { res(xobj.responseText) } else { rej('Something went wrong') } } xobj.send(null) }) }, get: async function () { var resp = await this._json() console.log(resp) },

this._json() devuelve una Promesa ahora. En este caso, tiene sentido usar await .

Recuerde: al poner async delante de una función, su función también devuelve una promesa.

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