ExpertiDict

JavaScript · Essencial · Inglês · Informal

callback hell

/ˈkɔlbæk hɛl/substantivo

Aninhamento profundo de callbacks assíncronos, que forma uma pirâmide de código difícil de ler e de tratar erros. Promises e async await surgiram em grande parte para resolver isso.

Onde usar

Aparece em código Node antigo com fs e requisições encadeadas. Em code review, sugere-se transformar em promises e async await, ou ao menos extrair funções nomeadas.

Em código

const fs = require('node:fs');
fs.readFile('a.txt', (e1, a) => {
  fs.readFile('b.txt', (e2, b) => {
    fs.readFile('c.txt', (e3, c) => {
      console.log(a + b + c);
    });
  });
});

Exemplos

This old script is a perfect callback hell.

Esse script antigo é um callback hell perfeito.

Async await got us out of callback hell.

O async await nos tirou do callback hell.

Cuidado

Achar que o problema é só estético: o tratamento de erros se repete em cada nível e é fácil de esquecer.

Sinônimos

pirâmide da perdição, pyramid of doom

Veja também

Todos os termos de JavaScript