JavaScript Moderno (ES6+): Closures, Promises e Event Loop
Instruções Gerais:
- Resolva as atividades em ordem progressiva de maturidade.
- Cada nível adiciona requisitos técnicos, tratamento de erros e casos de borda reais.
- Consulte o gabarito comentado ao final de cada questão para autoavaliação.
🎯 Nível 1: Fundamentos
Problema 13.1 — Escopo de Bloco (let/const), Arrow Functions e Template Literals
Contexto: Escopo de Bloco (let/const), Arrow Functions e Template Literals no contexto de JavaScript Moderno (ES6+): Closures, Promises e Event Loop.
Requisitos de Execução:
- Criar funções puras com arrow functions e interpolação de strings.
Resultado Esperado
JavaScript moderno ES6+ com sintaxe limpa e previsível.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_13_1_SeuNome - Envie na tarefa:
Atividade Cap 13 - JavaScript Moderno (ES6+): Closures, Promises e Event Loop
🔑 Gabarito de Código & Solução Comentada
const formatarPreco = (valor, moeda = 'BRL') => {
return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: moeda }).format(valor);
};
const precoFinal = formatarPreco(1450.75);
console.log(`Preco do produto: ${precoFinal}`);
🔍 Nível 2: Prática
Problema 13.2 — Closures e Encapsulamento de Estado Privado
Contexto: Closures e Encapsulamento de Estado Privado no contexto de JavaScript Moderno (ES6+): Closures, Promises e Event Loop.
Requisitos de Execução:
- Criar fábrica de contadores com closure mantendo variável interna inacessível externamente.
Resultado Esperado
Encapsulamento seguro de variáveis com closures em JavaScript.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_13_2_SeuNome - Envie na tarefa:
Atividade Cap 13 - JavaScript Moderno (ES6+): Closures, Promises e Event Loop
🔑 Gabarito de Código & Solução Comentada
function criarContador(inicial = 0) {
let count = inicial;
return {
incrementar: () => ++count,
obterValor: () => count
};
}
const contador = criarContador(10);
contador.incrementar();
console.log(`Valor do contador protegido: ${contador.obterValor()}`);
⚡ Nível 3: Integração
Problema 13.3 — Promises e Async/Await com Tratamento de Erros (try/catch)
Contexto: Promises e Async/Await com Tratamento de Erros (try/catch) no contexto de JavaScript Moderno (ES6+): Closures, Promises e Event Loop.
Requisitos de Execução:
- Executar múltiplas chamadas assíncronas com
Promise.alle capturar falhas.
Resultado Esperado
Fluxo assíncrono executado na Event Loop do motor V8.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_13_3_SeuNome - Envie na tarefa:
Atividade Cap 13 - JavaScript Moderno (ES6+): Closures, Promises e Event Loop
🔑 Gabarito de Código & Solução Comentada
async function carregarDados() {
const p1 = Promise.resolve('Usuario');
const p2 = Promise.resolve('Permissoes');
const [user, perms] = await Promise.all([p1, p2]);
return { user, perms };
}
carregarDados().then(res => console.log('Dados consolidados:', res));
🏆 Nível 4: Desafio Corporativo
Problema 13.4 — Padrão Observer / EventEmitter para Eventos Desacoplados
Contexto: Padrão Observer / EventEmitter para Eventos Desacoplados no contexto de JavaScript Moderno (ES6+): Closures, Promises e Event Loop.
Requisitos de Execução:
- Implementar barramento de eventos pub/sub com métodos
on,emiteoff.
Resultado Esperado
Barramento de eventos corporativo para arquitetura reativa.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_13_4_SeuNome - Envie na tarefa:
Atividade Cap 13 - JavaScript Moderno (ES6+): Closures, Promises e Event Loop
🔑 Gabarito de Código & Solução Comentada
class EventEmitter {
constructor() { this.eventos = {}; }
on(evento, callback) {
(this.eventos[evento] = this.eventos[evento] || []).push(callback);
}
emit(evento, dados) {
(this.eventos[evento] || []).forEach(cb => cb(dados));
}
}
const bus = new EventEmitter();
bus.on('LOGIN', u => console.log(`Evento de login auditado para: ${u}`));
bus.emit('LOGIN', 'admin_corp');