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

125
Visualizações
Comprender las devoluciones de función y las devoluciones de llamada

Tengo un problema con el orden de mis funciones y no sé por qué.

Al pasar el cursor sobre la llamada para function_2 dentro de la primera función, VSCode me da el resultado de Promise<void> , y la consola muestra undefined cuando se ejecuta (antes de function_2() incluso finalice).

Dado que estoy editando en VSCode, me dice en la parte superior cuando paso el mouse sobre una return que es para la request de devolución de llamada, por lo que tengo una idea general de cuál es el problema. Más allá de eso, no tengo idea, y lo más probable es que se deba a mi falta de comprensión sobre los rendimientos de las promesas y/o la verdadera secuencia de cuándo suceden las cosas en un guión.

Todo lo demás en mi código funciona sin problemas.

He investigado esto bastante extensamente sin suerte (tanto en este sitio como en alguna documentación general del código), pero avíseme si hay algo que me perdí.

He incluido el orden general de mis funciones a continuación y dónde están las llamadas de return .

 async function_1() { const check = await function_2(); return console.log(check); }
 async function_2() { ... if(...){ ... request(... => { ... while(...) { if(...) { ... return 'result'; //<<<RETURN } await msg.channel.awaitMessages({ ... }).then((c) => { if() { ... if() { ... return 'result'; //<<<RETURN }; } else if { ... return 'result'; //<<<RETURN } else { }; }).catch((c) => { ... return 'result'; //<<<RETURN }); }; //<<<end 'while' }); //<<<end 'request' }; //<<<end 'if' };

Si mi explicación no fue clara o se necesita más código, hágamelo saber.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

VSCode puede analizar su código y concluir que siempre devuelve Promise<void> un retorno nulo es lo mismo que indefinido en este contexto.

En primer lugar, Promise<T> siempre se devuelve desde una función async .

En segundo lugar, en la llamada a request(... => { está proporcionando una devolución de llamada, el valor de retorno de esta devolución de llamada es utilizado por solicitud y no por función_2 .

Esto significa que sus devoluciones dentro de sus devoluciones de llamada nunca devuelven ningún valor para function_2 .

Si desea devolver un valor de la function_2 principal_2, puede resolver una Promise personalizada como esta:

 function function_2() { // note: not async because we already return a Promise return new Promise((resolve, reject) => { request(() => { /* ... */ resolve("some value"); // effectively returns a value to the Promise if (error) { reject(error); // throw an error } /* ... */ }); }); } try { const value = await function_2(); console.log(value); // "some value" } catch(e) { console.error(e); }
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