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

130
Visualizações
Ejecutar la compilación sincrónicamente

No pude hacer que mi ciclo for se ejecutara sincrónicamente. El orden de registro que devuelve para cada dominio cambia. Supongo que el que responda más rápido traerá esos registros primero. ¿Dónde estoy haciendo mal?

 const rrtypes= ["A","MX","CNAME","NS","TXT"]; var resData = []; export const getAllRecords = async (req,res) => { const {domain} = req.params; for await(const rrtype of rrtypes){ dns.resolve (domain, rrtype, (err, records) => { resData.push(rrtype+" "+records); }); } res.send(resData); resData = []; }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Tenga en cuenta que puede usar la función dns.promises.resolve : https://nodejs.org/api/dns.html#dns_dnspromises_resolve_hostname_rrtype

entonces cambiarías tu código a:

 const rrtypes = ["A", "MX", "CNAME", "NS", "TXT"]; export const getAllRecords = async (req, res) => { const { domain } = req.params; // Notice that resData should be local to this function let resData = []; for (const rrtype of rrtypes) { try { const records = await dns.promises.resolve(domain, rrtype); resData.push(rrtype + " " + records); // IMO this would be better: resData.push({ type: rrtype, value: records }); } catch (err) { // Log the error here } } res.send(resData); };
about 4 years ago · Juan Pablo Isaza Relatório

0

El problema radica en su uso de await . await debe usarse al llamar a funciones asíncronas. En este momento lo está utilizando al crear instancias de variables de una matriz.

Gracias a un comentario de slebetman, pude ver que dns.resolve no devuelve una promesa, sino que usa devoluciones de llamada para administrar las llamadas asíncronas. Como también sugirió, podemos solucionar esto creando una promesa para administrar estas devoluciones de llamada.

 const rrtypes= ["A","MX","CNAME","NS","TXT"]; var resData = []; const dnsResolvePromise = (domain, rrtype) => { return new Promise((resolve, reject) => { dns.resolve(domain, rrtype, (err, records) => { if(err) return reject(err); resolve(rrtype+" "+records); }); }) } export const getAllRecords = async (req,res) => { const {domain} = req.params; for(const rrtype of rrtypes){ try{ const records = await dnsResolvePromise(domain, rrtype); resData.push(records); } catch (e){ // Handle error } } res.send(resData); resData = []; }
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