Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

164
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!