JavaScript: O que é um CallBack?

From Wiki

O que é um CallBack?

Um callback é uma função a ser executada após a execução de uma outra função - daí o nome 'call back'.

Como em JavaScript, as funções são objetos. As funções podem assumir funções como argumentos e podem ser retornadas por outras funções. Funções que fazem isso são chamadas de funções de ordem superior. Qualquer função que é passada como um argumento é chamada de função de callback.

Acontece que JavaScript é uma linguagem baseada em eventos. Isso significa que, em vez de aguardar uma resposta antes de seguir em frente, o JavaScript continuará executando sem que o evento anterior tenha finalizado.

Vamos ver um exemplo básico:

1) Imagine que um estudante vai estudar primeiro matemática e depois português. Em javascript seria:

function estudarMatematica(){
 console.log('Estudar Matematica');
}
function estudarPortugues(){
  console.log('Estudar Portugues');
}
estudarMatematica();
estudarPortugues();

O resultado:

Estudar Matematica
Estudar Portugues

Se você estiver no Chrome, execute Ctrl + Shift + j, e copie e cole o código pra ver o resultado

2) Agora imagine que estudar matemática leve mais tempo que estudar português. Em javascript seria:

function estudarMatematica(){
  // Simulate a code delay
  setTimeout( function(){
               console.log('Estudar Matematica');
  }, 500 );
}
function estudarPortugues(){
  console.log('Estudar Portugues');
}
estudarMatematica();
estudarPortugues();

O resultado:

Estudar Portugues
Estudar Matematica

Não é que o JavaScript não executou nossas funções na ordem em que o desejamos, e sim que o JavaScript não espera uma resposta do estudarMatematica() antes de passar para executar o estudarPortugues().

Vamos criar um CallBack?

function estudarMatematica(callback){
  console.log('Estudar Matematica');
  callback();
}
function estudarPortugues(){
  console.log('Estudar Portugues');
}
estudarMatematica(estudarPortugues);

O resultado:

Estudar Matematica
Estudar Portugues

Ver também