Funções de callback
Funções de callback são aquelas passadas como argumentos para outras funções e executadas após concluir a execução da função principal.
Elas são frequentemente utilizadas em situações assíncronas, como operações de leitura/escrita de arquivos, requisições de rede ou temporizadores, onde é necessário aguardar a conclusão de uma operação antes de realizar outra.
Exemplo
Considere o seguinte exemplo:
function rand(min = 1000, max = 3000) {
const num = Math.random() * (max - min) + min;
return Math.floor(num);
}
function f1(callback) {
setTimeout(function () {
console.log("f1");
if (callback) callback();
}, rand());
}
function f2(callback) {
setTimeout(function () {
console.log("f2");
if (callback) callback();
}, rand());
}
function f3(callback) {
setTimeout(function () {
console.log("f3");
if (callback) callback();
}, rand());
}
f1(function () {
f2(function () {
f3(function () {
console.log("Olá mundo!");
});
});
});
Neste exemplo, f1
, f2
e f3
são funções assíncronas simuladas, e cada uma delas recebe uma função de callback como parâmetro. O código finaliza com uma chamada encadeada de f1
, f2
, f3
e, finalmente, uma função de callback que imprime “Olá mundo!“.
Nota
O encadeamento excessivo de funções de callback é denominado de Callback Hell, sendo considerado uma má prática de programação.