Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

127
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda