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

172
Visualizações
¿Cómo se accede, procesa y transmite los datos de respuesta fuera de la solicitud?

En el fragmento a continuación, quiero poder acceder a locationArray fuera de la función de solicitud, entiendo que en mi código a continuación por qué no funcionará, sin embargo, probé muchos métodos diferentes para acceder a la matriz. He intentado usar promesas, funciones de devolución de llamada, etc., sin embargo, ninguno de ellos parece estar funcionando.

¿Alguna otra idea sobre cómo hacer esto? Incluso abierto a formas que he probado ya que en este punto todo vale la pena intentarlo.

 request(process.env.RESOURCE_SHEET, (error, response, html) => { var locationArray = new Array if(!error && response.statusCode == 200) { const $ = cheerio.load(html); $("h3").each((i, lle) => { const location = $(lle).text(); if(location.includes("Kansas")) return; if(location.includes("In Stock")) { var level = location + " ✅"; } else { var level = location + " ❌"; } locationArray.push(level); }); } console.log(locationArray) // Output 1: [level1,level2,level3,leveletc] }); console.log(locationArray) // Output 2: []
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

@StackSlave tenía razón, solo necesitaba una promesa, creo que arruiné la sintaxis cuando intenté resolverlo por primera vez usando una promesa, pero esto pareció funcionar.

 const promise = new Promise((resolve,reject) => { request(process.env.RESOURCE_SHEET, (error, response, html) => { var locationArray = new Array if(!error && response.statusCode == 200) { const $ = cheerio.load(html); $("h3").each((i, lle) => { const location = $(lle).text(); if(location.includes("Kansas")) return; if(location.includes("In Stock")) { var level = location + " ✅"; } else { var level = location + " ❌"; } locationArray.push(level); resolve(locationArray); }); } console.log(locationArray) // Output 1: [level1,level2,level3,leveletc] }); }); promise.then(array => { console.log(array); });
about 4 years ago · Juan Pablo Isaza Relatório

0

Uno no solo podría considerar un enfoque basado en promesas, como ya se sugirió, sino también una refactorización de código que separa las diferentes preocupaciones en tareas e implementa estas últimas como funciones que se pueden alimentar/pasar a la cadena de promesas. Como ventaja, la refactorización se recupera con un código legible por humanos que también podría ser más fácil de mantener...

 function createRequest(src) { return new Promise((resolve, reject) => { request(src, (error, response, html) => { if (!error && response.statusCode === 200) { resolve(html); } else { reject({ error, response }); } }); }; } function handleFailedRequest(reason) { const { error, response } = reason; // proceed with failure handling based on // either request data `error` and/or `response`. } function createLocationArray(html) { const locationArray = []; const $ = cheerio.load(html); $('h3').each((i, lle) => { const location = $(lle).text(); if (!location.includes('Kansas')) { const isInStock = location.includes('In Stock'); locationArray.push( `${ location } ${ isInStock && '✅' || '❌' }` ); } }); return locationArray; } function processLocationArray(array) { console.log('locationArray ... ', array); } const promisedResponse = createRequest(process.env.RESOURCE_SHEET); promisedResponse .then(createLocationArray) .then(processLocationArray) .catch(handleFailedRequest);
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