DEV Community

Telles (@UnicornCoder) for Javascript

Posted on

Callback's


Quando falamos em callback, acredito que talvez seja uma coisa um pouco confusa na maioria das definições o callback é uma função chamar outra função para trazer o resultado da função final.
Bom mas como isso funciona, vou mostrar isso da maneira mais simples e como trabalhamos com as convenções de callback
No MDN temos a seguinte definição:
Uma função callback é uma função passada a outra função como argumento, que é então invocado dentro da função externa para completar algum tipo de rotina ou ação.


Show me the code!
Vamos imaginar um cenário onde temos uma function que vai retornar um objeto com um nome de usuário e um id, essa function vai simular como se estivessemos fazendo uma requisição de uma API, certo?

Teremos algo nesse formato:

Se a gente quiser executar essa function ela vai trazer um resultado undefined devido ao escopo que esta sendo executado essa function.
Ai que usamos as famosas chamadas callbacks e vamos seguir a sua convenção.
Vamos entender o como o callback se comporta:
Na função de callback passamos 2 parâmetros, primeiro passamos o Error e logo em seguida nosso Success, dentro dessa função teremos nosso console.log().

Mas se executarmos ele não vai acontecer nada, porque precisamos passar a chamada desse callback na function obterUser(), nosso código ficará assim:

Legal! E assim meu código vai compilar e trazer meu resultado? A resposta é não, porque precisamos de mais uma function para chamar a função e trazer nosso resultado:

O que acontece aqui é o chamado Hoisting que faz com que nossa função "obterUser(meuCallback)" seja executada primeiro pela engine do JavaScript.
Para nossa tratativa de erro podemos fazer o seguinte na nossa função de obterUser():

Ao rodarmos esse código teremos como resultado:

Meu Usuário { id: 1, nome: 'Diego Telles' }

Regras do Callback:

  • Por padrão o parâmetro de callback sempre será passado por ultimo
  • Sempre passamos primeiro o Erro e logo em seguida o Sucesso

É isso galera, espero que ajude a tirar algumas duvidas!

Top comments (0)