3
respostas

Processamento Assíncrono

No vídeo "Entendendo o porquê do uso do callback" foi comenta que no momento da solicitação da Query na base de dados existe um intervalo entre o envio do Client para o banco de dados e com isso temos um tempo para o atendimento da solicitação e o retorno da mesmo. Você fala da utilização dos CallBacks para otimizar o processamento, o processador fica liberado para atender novas requisições, voce cita essa liberação, está falando do processador do Client ou Server? E o por que o não uso de callback temos o impacto no uso do processador ?

3 respostas

Fala aí Jose, beleza? O Node ganhou muita fama devido a sua forma de não ser bloquante, para que isso seja possível ele é baseado em eventos.

Se você não trabalhar com callback's seu código iria travar em uma determinada linha, os demais trechos só seriam executados assim que o processamento dessa linha fosse terminado.

Trabalhando com callback's o Node continua executando os demais trechos do seu código e assim que o processamento do callback for finalizado ele chama a função.

Obs: De forma bem resumida, o fluxo seria basicamente esse.

Espero ter ajudado.

Matheus,

Boa noite,

         Obrigado pelo retorno, ou seja, posso entender que os callbacks podem ser comparados com as antigas Threads que utilizávamos em C#.
   Com base no que voce falou e tendo o cenário descrito abaixo, para utilizar o callback teria que ter um controle maior, pois ao evocar o cenário 1, teria que controla-lo para executar o cenário 2, apenas apos a finalização do cenário 1 ou neste caso não utilizar o callback para esse cenário?

Tenho uma função que retorno os dados pessoais e financeiros de um segurado, conforme segue abaixo: 1 - Com base no CPF do segurado tenho uma consulta que irá trazer uma lista de apólices do segurado em questão, e tais informações estão armazenadas no SQL Server. 2 - Com o retorno do lista de apólices do segurado tenho que ir no Oracle e recuperar todas as parcelas pagas de cada uma das apólices existente no listra que retornou do SQL Server, ou seja, para recuperar informações de parcelas pagas tenho a dependência das apólices da consulta anterior(SQL Server).

Fala aí Jose, mais ou menos, o Node é Single Thread, ou seja, roda em uma única Thread, mas, a ideia é a mesma porém implementadas de forma diferente.

No seu caso, você pode trabalhar com Promises e utilizar o .then delas, nesse caso, o .then só será invocado quando a mesma for resolvida.

No seu caso, sua função de callback só será invocada quando a Promise for resolvida.

Dê uma pesquisada sobre o assunto, aqui na Alura tem cursos que ensinam e mostram o uso da Promise.

Obs: Outra ideia é você continuar os próximos passos dentro da função de callback.

Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software