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

167
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 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