JavaScript Glossário
Termos Técnicos Essenciais para Generator Functions e Async Programming
Referência direto ao ponto: definições, código e termos relacionados pra você dominar conceitos avançados de JavaScript.
Navegação Rápida
Conceitos Fundamentais
Generator Function
Função especial em JavaScript marcada com asterisco (*) que pode pausar e retomar sua execução usando yield. Permite processamento sob demanda e controle fino sobre iteração.
function* myGenerator() { yield 1; yield 2; }yield
Palavra-chave que pausa a execução de uma generator function e retorna um valor. A execução pode ser retomada chamando .next() no iterator.
yield value; // pausa e retorna 'value'Iterator
Objeto que implementa o protocolo de iteração com método .next() que retorna {value, done}. Permite percorrer sequências de dados.
const iterator = myGenerator(); iterator.next();Symbol.iterator
Symbol bem conhecido que define o método iterator padrão para um objeto. Permite que objetos sejam iteráveis com for...of.
obj[Symbol.iterator] = function* () { yield 1; }Programação Assíncrona
Async Generator
Generator function que trabalha com operações assíncronas usando async function* e pode yield Promises. Consumido com for await...of.
async function* asyncGen() { yield await fetch('/api'); }for await...of
Loop que itera sobre objetos async iterable, aguardando cada Promise antes de continuar. Usado com async generators.
for await (const item of asyncGenerator()) { }Iterator Helpers
Iterator Helpers
Métodos como map(), filter(), take() que funcionam com iterators para criar pipelines de transformação sob demanda.
iterator.map(x => x * 2).filter(x => x > 5).take(10)Pipeline
Sequência de operações de transformação de dados onde saída de uma etapa é entrada da próxima. Comum com iterator helpers.
data.map(transform).filter(validate).take(limit)Performance & Otimização
Lazy Evaluation
Estratégia onde valores são computados apenas quando necessários, não antecipadamente. Economiza memória e CPU em generators.
// Só processa quando .next() é chamadoRate Limiting
Técnica para controlar velocidade de operações, especialmente útil com APIs. Evita ban por excesso de requisições.
await new Promise(r => setTimeout(r, 1000/rateLimit))Chunk Processing
Processamento de dados em lotes (chunks) ao invés de item por item ou tudo de uma vez. Equilibra performance e memória.
for (const batch of chunk(data, 1000)) { }Memory Leak
Problema onde memória é alocada mas nunca liberada, causando crescimento contínuo do uso de RAM até crash da aplicação.
// Arrays gigantes que não são limposStreams & Dados
Backpressure
Mecanismo para controlar fluxo de dados quando produtor é mais rápido que consumidor. Evita overflow de memória em streams.
// Stream pausa quando buffer está cheioStreaming
Processamento de dados conforme chegam, sem carregar tudo na memória. Ideal para arquivos grandes e dados real-time.
// Processa linha por linha conforme lê arquivo