Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

206
Visualizações
¿Mi función registrará datos JSON de un XMLHttpRequest pero no los devolverá?

Estoy tratando de acceder a la API de NHL para un proyecto personal. Estaba recibiendo errores de solicitud de CORS y encontré la siguiente solución para acceder a todos los diferentes sitios (algunos funcionaron antes y otros no).

Estoy pasando a través de un enlace y, según uno de los resultados , parece estar accediendo a los datos en la página y mostrándolos en formato JSON y de cadena. El único problema es que no puedo devolver ninguno de esos datos fuera de la función como un objeto o de otra manera.

Los últimos 2 registros muestran indefinidos, y los 2 dentro de la función generan los datos que quiero. ¿Me estoy perdiendo algo obvio o hay un problema más profundo con el acceso al sitio web?

Gracias.

 function getJSON(url){ let request = new XMLHttpRequest(); request.open('GET', url); request.onload = function () { // Begin accessing JSON data here let data = JSON.parse(this.response); if (request.status >= 200 && request.status < 400) { //Start writing function here console.log(data); console.log(JSON.stringify(data)); let data2 = JSON.stringify(data) return data2 } else { console.log('error'); } } request.send(); } let data1 = getJSON("https://statsapi.web.nhl.com/api/v1/people/8476459/stats?stats=statsSingleSeason&season=20212022") console.log(data1); console.log(JSON.stringify(data1));
about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

Está realizando una llamada asíncrona, lo que significa que devuelve el valor antes de que la respuesta regrese, es por eso que data1 no está undefined

Puedes ver este post para más información.

Para su caso, puede envolver la solicitud con Promise

 async function getJSON(url) { return new Promise(function (resolve, reject) { let request = new XMLHttpRequest(); request.open('GET', url); request.onload = function () { // Begin accessing JSON data here let data = JSON.parse(this.response); if (request.status >= 200 && request.status < 400) { //Start writing function here let data2 = JSON.stringify(data) return resolve(data); } else { return reject('error') } } request.send(); } ) } async function main() { let data1 = await getJSON("https://statsapi.web.nhl.com/api/v1/people/8476459/stats?stats=statsSingleSeason&season=20212022") console.log(data1); console.log(JSON.stringify(data1)); } main();

Una mejor manera es usar Fetch API

 async function getJSON(url) { const data1 = await fetch(url). then(response => response.json()); return data1; } async function main() { const result = await getJSON('https://statsapi.web.nhl.com/api/v1/people/8476459/stats?stats=statsSingleSeason&season=20212022'); console.log(result); } main();

about 4 years ago · Santiago Gelvez Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda