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

178
Visualizações
¿Cómo esperar a que una solicitud de API complete una variable antes de pasarla a una página web como argumento?

Soy nuevo en JavaScript y parece que no puedo hacer que esto funcione, el tema de la prueba depende de la entrada del usuario... cuando el usuario presiona siguiente, obtengo el tema (esto también lleva al usuario a la página principal de la prueba), luego tengo que obtener datos de la API con el tema como parámetro... Tengo que procesar el resultado de la operación de obtención... Luego tengo que pasar esa información a la página principal del cuestionario... pero la variable que se supone para ser completado por la solicitud de recuperación aún no está definido cuando paso a la página principal del cuestionario

 var Allquestions; var sheetdb = require('sheetdb-node'); // create a config file var config = { address: 'https://sheetdb.io/api/v1/9djmf8ydc7hwy', }; //sheetdb // Create new client var client = sheetdb(config); function downloadquestions(topic) { console.log(topic); client.read({ limit: 2, sheet: topic }).then(function(data) { console.log(data + " in client.read func") processQuestions(data); }, function(err){ console.log(err); }); } async function processQuestions(data) { console.log(data + "data in process"); Allquestions = JSON.parse(data); console.log(Allquestions[0].Question + " This is defined"); } app.get("/", (req, res) => { res.render("pages/index", { title: "Home"}); }); // app.post("/" , urlencodedParser ,(req , res) => { // console.log(req.body.topic); // }) app.get("/questions", urlencodedParser , (req , res) => { downloadquestions(req.body.topic); console.log(Allquestions + " this is undefined"); res.render("/pages/quizpage" , {Allquestions}) })
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Hay algunos problemas con su código, tiene una cadena de promesa rota, client.read( es una promesa, y esa promesa no va a ninguna parte. O la devuelve o la await . Para poder await su necesitará también marque su ruta (req, res) como async también.

Su código está un poco mezclado, tiene Allquestions como una variable global, esto no es bueno para múltiples usuarios, ya que el último tema lo anulará cada vez.

También trate de evitar tragar excepciones en las funciones de utilidad, trate de mantener su manejo de excepciones en el nivel superior, por ejemplo. en su caso dentro de su controlador de req/res.

Entonces, con todo esto en mente, su código refactorizado podría verse como ->

 const sheetdb = require('sheetdb-node'); // create a config file const config = { address: 'https://sheetdb.io/api/v1/9djmf8ydc7hwy', }; //sheetdb // Create new client const client = sheetdb(config); async function downloadquestions(topic) { const data = await client.read({ limit: 2, sheet: topic }); return processQuestions(data); } function processQuestions(data) { return JSON.parse(data); } app.get("/", (req, res) => { res.render("pages/index", { title: "Home"}); }); app.get("/questions", urlencodedParser , async (req , res) => { try { const allQuestions = await downloadquestions(req.body.topic); res.render("/pages/quizpage" , {Allquestions}); } catch (e) { console.error(e); res.end('There was an error'); } })
about 4 years ago · Juan Pablo Isaza 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