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

99
Views
¿Cuál sería una forma adecuada de devolver esta promesa?

Soy nuevo en la codificación y las promesas son algo así como un concepto abstracto para mí. Sé que para devolver una Promesa debes usar .then y .catch , pero no estoy seguro de cómo deben usarse exactamente en el siguiente código.

 /** * Make an HTTPS request to the MTA GTFS API for a given feed. * @param {String} baseUrl - base URL for MTA GTFS API * @param {String} feedId - identifier for which realtime feed * @param {String} apiKey - key for MTA GTFS API * @return {<Object>} - Promise of parsed feed. */ function makeRequest(baseUrl, feedId, apiKey) { const feedUrl = baseUrl + feedId; return new Promise((resolve, reject) => { const req = https.request(feedUrl, { headers: { 'x-api-key': apiKey } }, (res) => { if (res.statusCode < 200 || res.statusCode >= 300) { return reject(new Error('statusCode=' + res.statusCode)); } var data; data = []; res.on('data', (chunk) => { return data.push(chunk); }); return res.on('end', function() { var msg; data = Buffer.concat(data); try { msg = nstrDecoder.decode(data); } catch (err) { try { console.log(err.message); msg = nsssDecoder.decode(data); } catch (err) { console.log(err.message); msg = ""; } } resolve(msg); }); } ); req.on('error', (e) => { reject(e.message); }); req.end(); }); } return console.log(makeRequest(baseUrl, feedId, apiKey));

Después de ejecutar este código, aparece un mensaje que dice que la Promesa está pendiente. ¿¿Pensamientos??

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Al llamar a una función que devuelve una promesa, obtendrá la promesa en un estado pendiente, ya que aún no se ha resuelto o rechazado. Tienes dos opciones.

Opcion uno. nodo 10+ puede usar async await.

 async function main(){ const res = await makeRequest(baseUrl, feedId, apiKey) return res }

Pre nodo 10

 makeRequest(baseUrl, feedId, apiKey) .then(data => { console.log(data) }) .catch(err => { console.log(err) })

Esencialmente, si tiene que esperar los datos, debe tener el código que se basa en esos datos después de esperar o en el bloque .then.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

about 4 years ago · Juan Pablo Isaza Report

0

Su función makeRequest() devuelve una promesa. Para usar esa promesa, usa .then() o await para obtener el valor resuelto de la promesa.

Usando .then() :

 makeRequest(baseUrl, feedId, apiKey).then(result => { console.log(result); }).catch(err => { console.log(err); });

o usando await :

 async function someFunction() { try { let result = await makeRequest(baseUrl, feedId, apiKey); console.log(result); } catch(e) { console.log(err); } }

FYI, mucho de lo que makeRequest() se puede hacer de manera más simple usando una biblioteca de solicitud http que ya admite promesas. Hay una lista de bibliotecas competentes para elegir aquí .

Mi favorito es got() , pero puedes revisar la lista para decidir cuál te gusta. Las principales ventajas son que ya recopilan la respuesta completa para usted, ya admiten promesas, admiten una amplia variedad de esquemas de autenticación con lógica integrada y, a menudo, pueden decodificar o analizar la respuesta por usted, todo lo que https.request() . no sabe cómo hacerlo por sí mismo.

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!