jonathanjuliani
Implementando Fila (Queue) com NodeJS e Javascript
Fila FIFO em JavaScript e Node.js: implementação simples, padrões de uso e onde filas aparecem em sistemas reais no dia a dia.

Job queue, fila de mensagens, atendimento por ordem de chegada — tudo FIFO: primeiro a entrar, primeiro a sair. Array com push + shift funciona, mas tem pegadinha de performance.
O que você vai aprender:
enqueue/dequeuecom array- Por que
shift()pode doer em fila grande - Quando linked list ajuda na fila
- BFS (ep. 14) como fila na prática
Pré-requisitos: pilhas (ep. 4) e linked list (ep. 3).
Queue (fila): FIFO com array na prática
Eficiência no Gerenciamento Sequencial de Dados
Filas, ou queues, são uma estrutura de dados essencial que opera sob o princípio First In, First Out (FIFO), onde o primeiro elemento adicionado é o primeiro a ser removido. Então, qual é a sacada aqui? Literalmente uma fila, quem chegou primeiro vai ser executado/processado primeiro.

Fundamentos e Implementação
Uma fila é uma coleção ordenada de itens onde a adição de novos itens ocorre no final da fila, e a remoção dos existentes, no início (quando a gente fala remoção aqui, não queremos dizer apenas remoção, mas pode ser remoção, processamento, ordem de leitura, etc).
Assim como as pilhas, as filas podem ser implementadas utilizando arrays em NodeJS/JavaScript. Uma implementação básica incluiria métodos para enfileirar (enqueue), desenfileirar (dequeue) e inspecionar o primeiro elemento da fila:
class Queue {
constructor() {
this.items = []
}
// Adiciona um elemento ao final da fila
enqueue(element) {
this.items.push(element)
}
// Remove e retorna o primeiro elemento da fila
dequeue() {
if (this.isEmpty()) return 'Underflow' // Fila vazia
return this.items.shift()
}
// Retorna o primeiro elemento sem removê-lo
front() {
if (this.isEmpty()) return 'No elements in Queue'
return this.items[0]
}
// Verifica se a fila está vazia
isEmpty() {
return this.items.length === 0
}
// Imprime a fila
printQueue() {
let str = ''
for (let i = 0; i < this.items.length; i++) str += this.items[i] + ' '
console.log(str)
}
}Onde raios Usamos Filas?
Controle de Tarefas
Filas são ideais para controle de tarefas em sistemas operacionais, onde operações são agendadas e processadas na ordem de chegada, garantindo uma execução justa e sequencial.
Gerenciamento de Eventos
Em aplicações que respondem a eventos externos, como interfaces gráficas ou servidores web, filas ajudam a gerenciar eventos de forma organizada, processando-os um a um.
Edge cases: shift() é O(n)
Cada dequeue com shift() move todos os elementos do array. Fila com milhões de itens vira gargalo — use índice head, linked list ou fila da lib.
"Tá Jon, por que não
popdo começo?"
pop(0) também é O(n). FIFO no array pede remover do índice 0 — por isso linked list ou cursor.
TL;DR — Fila
| Abordagem | dequeue | Observação |
|---|---|---|
push + shift | O(n) | Simples, ok pra fila pequena |
índice head | O(1) | Array sem shift |
| linked list | O(1) | Ponteiros head/tail |
Próximos passos
- Árvores (ep. 6): hierarquia — Implementando Árvores
- BFS (ep. 14): fila obrigatória — Algoritmos de grafos
Antes de fechar
Onde você usou fila de verdade — Bull, SQS, ou array caseiro? Comenta o gotcha que mais te pegou.
Inscreva-se no Ledger da Engenharia
Receba notas de arquitetura e performance na sua caixa de entrada. Mesma lista do convite—inscreva-se aqui quando quiser.
Artigos relacionados

Estrutura de Dados e Algoritmos - Um Resumo dos Mais Utilizados
Resumo prático das estruturas de dados e algoritmos mais usados em JavaScript/Node.js — com exemplos e links para aprofundar cada tema.
Ler publicação
Implementando Array com NodeJS e Javascript
Arrays em JavaScript/Node.js: métodos essenciais, imutabilidade e quando preferir array em vez de outras estruturas. Guia com código.
Ler publicação