En Node.js, cuando se trata de devoluciones de llamadas asincrónicas, es crucial comprender la naturaleza fundamentalmente sin bloqueo de la plataforma . Este artículo aborda un desafío común: cómo hacer que una función espere hasta que se complete una devolución de llamada.
Considere la siguiente función simplificada:
function(query) {
myApi.exec('SomeCommand', function(response) {
return response;
});
}
El objetivo es llamar a myApi.exec y devolver la respuesta recibida en la devolución de llamada. Sin embargo, este código regresa inmediatamente, lo que lo vuelve ineficaz.
La arquitectura basada en eventos de Node.js dicta que la "buena" forma de manejar devoluciones de llamadas asincrónicas es no esperar. En cambio, las funciones deben aceptar un parámetro de devolución de llamada que se invocará al finalizar la operación. La persona que llama no debe esperar un valor de "retorno" tradicional, sino más bien proporcionar una devolución de llamada para procesar el resultado.
function(query, callback) {
myApi.exec('SomeCommand', function(response) {
// additional processing...
callback(response); // This "returns" the value to the caller
});
}
Uso:
myFunction(query, function(returnValue) {
// Use the return value here
});
En este enfoque, la función no se bloquea y permite que el bucle de eventos continúe procesando otras tareas. Cuando se invoca la devolución de llamada, la función proporcionada maneja el resultado de forma asincrónica.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3