JavaScript · Avançado · Inglês · Técnico
backpressure
Mecanismo dos streams do Node em que o consumidor lento sinaliza ao produtor para pausar. Sem ele, os dados se acumulam em buffers na memória.
Onde usar
Aparece ao copiar arquivos grandes ou processar uploads: write devolve false quando o buffer enche, e o produtor deve esperar o evento drain. Em code review, usar pipeline resolve isso automaticamente.
Em código
const { pipeline } = require('node:stream');
const fs = require('node:fs');
pipeline(
fs.createReadStream('grande.log'),
fs.createWriteStream('copia.log'),
(err) => console.log(err ?? 'ok')
);Exemplos
Without backpressure the whole file piled up in memory.
Sem backpressure, o arquivo inteiro se acumulou na memória.
write returned false, so we wait for the drain event.
O write devolveu false, então esperamos o evento drain.
Cuidado
Ignorar o retorno de write() num laço, enchendo a memória até o processo cair.
Sinônimos
contrapressão