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

103
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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