Em Node.js, ao lidar com retornos de chamada assíncronos, é crucial compreender a natureza fundamentalmente não bloqueadora da plataforma . Este artigo aborda um desafio comum: como fazer uma função aguardar a conclusão de um retorno de chamada.
Considere a seguinte função simplificada:
function(query) {
myApi.exec('SomeCommand', function(response) {
return response;
});
}
O objetivo é chamar myApi.exec e retornar a resposta recebida no callback. No entanto, esse código retorna imediatamente, tornando-o ineficaz.
A arquitetura orientada a eventos do Node.js determina que a "boa" maneira de lidar com retornos de chamada assíncronos é não esperar. Em vez disso, as funções devem aceitar um parâmetro de retorno de chamada que será invocado após a conclusão da operação. O chamador não deve esperar um valor de "retorno" tradicional, mas sim fornecer um retorno de chamada para processar o 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
});
Nesta abordagem, a função não bloqueia e permite que o loop de eventos continue processando outras tarefas. Quando o retorno de chamada é invocado, a função fornecida trata o resultado de forma assíncrona.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3