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

112
Vistas
¿Cómo encadenar una API de búsqueda a una función y luego a otra función?

Sigo recibiendo el error de sintaxis "No detectado (en promesa) ReferenceError: showQuestion no está definido" Tratando de encontrar formas de solucionar este problema. Además, todavía soy nuevo en todo esto.

 fetch( 'https://jservice.kenzie.academy/api/random-clue?valid=true' ) .then(response => response.json()) .then(randomDataId => { const categoryDataId = randomDataId.categoryId; console.log(`category id is: ${categoryDataId}`); fetch( `https://jservice.kenzie.academy/api/clues?category=${categoryDataId}` ) .then(response => response.json()) .then(randomCatyId => { const rightAnswer = randomCatyId.clues[randomData].answer; const showTitle = randomCatyId.clues[randomData].category.title; const showQuestion = randomCatyId.clues[randomData].question; showCategory.innerText = `Category: ${showTitle}`; h2Question.innerText = `Question: ${showQuestion}`; console.log('question: ' + showQuestion); console.log('answer: ' + rightAnswer); questionFetch(); }); }); function questionFetch() { h2Question.innerHTML = `Question: ${showQuestion}`; }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

fetch api es de naturaleza asíncrona, y está intentando leer los datos 'showQuestion' que aún no están disponibles. por favor vea el siguiente código. use async-await, es una forma mucho mejor de jugar con fetch api.

 const randomData = 2; // fake Data async function GetDataFromApi(url) { const response = await fetch(url); return await response.json(); } async function RunApp(params) { const randomDataId = await GetDataFromApi('https://jservice.kenzie.academy/api/random-clue?valid=true'); const categoryDataId = randomDataId.categoryId; console.log(`category id is: ${categoryDataId}`); const randomCatyId = await GetDataFromApi(`https://jservice.kenzie.academy/api/clues?category=${categoryDataId}`); const rightAnswer = randomCatyId.clues[randomData].answer; const showTitle = randomCatyId.clues[randomData].category.title; const showQuestion = randomCatyId.clues[randomData].question; // showCategory.innerText = `Category: ${showTitle}`; // h2Question.innerText = `Question: ${showQuestion}`; console.log('question: ' + showQuestion); console.log('answer: ' + rightAnswer); questionFetch(showQuestion); } function questionFetch(showQuestion) { //h2Question.innerHTML = `Question: ${showQuestion}`; } RunApp();
about 4 years ago · Juan Pablo Isaza Denunciar

0

La función questionFetch() no tiene acceso a la constante showQuestion . Esto se debe a que esta constante se define en la solicitud de recuperación. La función showQuestion no tiene acceso a los datos definidos dentro de otra función. (más información sobre 'alcance' aquí: https://www.w3schools.com/js/js_scope.asp )

Para solucionar esto, debe proporcionar la constante showQuestion como argumento al llamar a la función questionFetch:

 questionFetch(showQuestion); //we supply the constant to the function }); }); /** * function takes an argument, calls it x, and applies it as x. * The name of the argument does not matter, 'x' just the label * this function uses to hold the data supplied * (in our case, the question string); * */ function questionFetch(x) { h2Question.innerHTML = `Question: ${x}`; }

Asegúrese de definir y proporcionar el argumento [ datos aleatorios ] utilizado en la segunda función de búsqueda, ya que actualmente no está definido.

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