Skip to content

Instantly share code, notes, and snippets.

@matepaiva
Last active November 23, 2017 23:15
Show Gist options
  • Save matepaiva/33711ff78a849e4deefe87ecfe89be50 to your computer and use it in GitHub Desktop.
Save matepaiva/33711ff78a849e4deefe87ecfe89be50 to your computer and use it in GitHub Desktop.
Ensinando JS em português: Callback

CALLBACK

Callbacks são muito utilizados em javascript. Callback é basicamente uma função que é passada para outra função. Toda função é uma ação, certo? Então imagine que o callback seja uma ação que você quer que aconteça depois de outra ação. Exemplo:

  1. Alguém me mandou mensagem
  2. Eu respondo de volta "olar".

Colocando isso em javascript, num formato de callback, seria:

alguemMandouMensagem(respondaOla). 

O "respondaOla" é uma função que só será executada quando alguém mandar mensagem.

Outro exemplo:

function prepararComida (ingredientes, callback) {
  // faça comida com os ingredientes
  var comida = ingredientes + 'fogo'
  callback(comida)
}

function comerComida(comida) {
  // comer a comida
}

// comerComida é um callback de fazerComida, neste caso
prepararComida(ingredientes, comerComida)

Veja que a função comerComida é passada como callback para a função prepararComida. Poderia ter passado outra função também, como "venderComida". O importante é que o callback de "prepararComida" sempre será uma função que receberá a comida como um argumento.

Em outras palavras, o callback diz: "faça alguma coisa e me ligue de volta quando você tiver o resultado, para que então eu faça alguma coisa com ele".

Exemplo real

O Express utiliza callbacks em suas rotas. Quando você diz:

app.get('/tips', listarDicas)

function listarDicas (req, res) {
  // busque a lista de dicas no banco de dados e responda
  res.json(tips)
}

Você está dizendo: Vigie a rota 'tips' para chamadas 'GET' e, se ela for acessada, interprete os dados e me entregue para que eu possa buscar uma lista de dicas. 'listarDicas' é uma função de callback de app.get. O Express funciona assim, ele sabe que você passará para ele uma função de callback.

Aprenda mais sobre callbacks aqui: https://www.sitepoint.com/callbacks-javascript/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment