Promises II: O que é um callback?

Callbacks são funções de primeira classe. Isso significa que elas têm características de primeira classe, como poderem ser passadas para outras funções. Houve uma época em que callbacks eram usados para lidar com operações assíncronas, mas precisávamos de algo melhor por causa de algumas limitações (como problemas com callbacks aninhados).

Aqui está um exemplo simples de um callback:

function asyncFunc(cb) {
  let result = ""
  // After some time the result of an async opertion comes back and is put in the "result" variable.  We'll use a string for this example.   
  result = "hello"
  cb(result)
}

function callback(str) {
  console.log(str)
}

asyncFunc(callback)
console.log("goodbye")

// goodbye
// hello

"goodbye" aparece antes de "hello" porque a operação assíncrona em asyncFunc() é não bloqueante, o que significa que ela é deixada de lado até terminar, mas, enquanto isso, seguimos em frente e chamamos a próxima função.

Desafio

  • Corrija anotherFunc() para que as chamadas a ela alterem a variável doc para bye.
  • Mantenha o setTimeout em 100ms e não altere a função callback nem a variável doc.

Observações

Consulte a aba Resources para obter mais informações sobre callbacks.