,

Leitura eficiente de 10GB de JSON no frontend usando webstreams || Por Erick Wendel

Posted by






Como ler 10GB de JSON no frontend sem travar a tela || Webstreams 101 || Erick Wendel

Como ler 10GB de JSON no frontend sem travar a tela

O processamento de grandes volumes de dados no frontend pode ser desafiador, especialmente quando se trata de lidar com arquivos grandes, como 10GB de JSON. Neste artigo, vamos discutir como podemos lidar com esse desafio usando webstreams, uma técnica fundamental para trabalhar com fluxos de dados na web.

O que são webstreams?

Webstreams são uma especificação do JavaScript que fornece uma forma padronizada de ler e processar dados de forma assíncrona. Com webstreams, podemos lidar com grandes volumes de dados de forma eficiente, evitando travamentos na tela e melhorando a experiência do usuário.

Como utilizar webstreams para ler 10GB de JSON

Para ler um arquivo de 10GB de JSON no frontend sem travar a tela, podemos utilizar a API de streams do JavaScript, que nos permite processar o arquivo de forma assíncrona e eficiente. Veja um exemplo de como podemos fazer isso:

“`javascript
const url = ‘arquivo.json’;
fetch(url)
.then(response => response.body)
.then(body => {
const reader = body.getReader();
const decoder = new TextDecoder();

reader.read().then(({ value, done }) => {
if (done) {
console.log(‘Fim da leitura’);
return;
}

const chunk = decoder.decode(value, { stream: true });

// Processar o chunk de dados
console.log(chunk);

reader.read().then();
});
});
“`

Neste exemplo, utilizamos a função `fetch` para obter o corpo do arquivo JSON, e em seguida criamos um leitor de dados para processar o arquivo em chunks. Isso nos permite processar grandes volumes de dados de forma progressiva, sem travar a tela.

Conclusão

Lidar com grandes volumes de dados no frontend pode ser desafiador, mas com o uso de webstreams, podemos tornar esse processo muito mais eficiente e evitar travamentos na tela. Espero que este artigo tenha sido útil para compreender como podemos utilizar webstreams para ler 10GB de JSON no frontend. Continue explorando as possibilidades dessa poderosa técnica e melhore a experiência do usuário em suas aplicações web.


0 0 votes
Article Rating
26 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Erick Wendel
11 months ago

Eaaaai galera como estão? Espero que estejam curtindo o conteúdo. Notei que no video esqueci de colocar o AbortController para o backend quando o frontend aborta a operação. Criei um segundo arquivo com a solução corrigida.

Não esquece de deixar seu like no video e o star no repositorio, isso me ajuda demais!

https://github.com/ErickWendel/webstreams-nodejs-and-browser-tutorial/blob/main/recorded/server/index-bug-resolvido.js

Célio Junior
11 months ago

Tudo bem, você venceu! Me inscrevi no seu canal… Você é incrível ❤️

João Gabriel Neto
11 months ago

Ei, vc q tá lendo isso hoje… Eu sei q vc só ta aqui pela rinha de frontend, safado… eu tbm

Tiago Gomes
11 months ago

Isso é muito interessante

Aprenda a programar de graça
11 months ago

Que conteúdo bom. Um exemplo para mim. Como ficaria um código assim em C# ?

Gustavo
11 months ago

Esse conteúdo de webstreams é abordado com mais detalhes no curso JS Expert?

Henrique Morozini Hupp
11 months ago

Muito top cara, quanto tempo você gasta para produzir um conteúdo desse de praticamente 1h ?

Jander Nery Dev
11 months ago

Fala Erick beleza, então, estou upando um file pequeno até, mas no server está dando um 413 Request Entity Too Large, será que é problema da aplicação ou da cloud, valeu mesmo seus vídeos são otimos.

Tiago Perrelli
11 months ago

E ai Erick, beleza? Reproduzi algo parecido, porém abrindo um pool de connections do mysql para retornar da mesma forma. No meu caso, tô pegando: ERR_INVALID_STATE Type Error Controller is already closed? Alguma idéia?

Gabriel
11 months ago

isso só funciona com um JSON local, ou qualquer um? Tô com um JSON pequeno (34 itens), mas a resposta tá demorando 4s só pra fazer a listagem para um array.

Adenilton Barroso
11 months ago

Foi meu primeiro contato com webstreams e conseguir entender sem me perder. As aplicações para essa abordagem são inúmeras. Muito obrigado pela aula, excelente didática!

Pavlov
11 months ago

Gostaria de saber se o TREINAMENTO SOBRE STREAMS e' em ingles e valor tambem e' em dolar ?

Paulo Volpin
11 months ago

Brabo demais!!! Isso eleva o nível e disponibiliza um leque muito poderoso pra resolver problemas reais de maior escala. Já tinha visto um vídeo seu e um post lá no Linkedin mostrando um código, ai apliquei no trampo, foi um ganho muito grande lá no processo. Agora com esse acoplamento de web e node o bagulho fica sem limites mano. Grato demais pela aula!! Abraço

Pedro
11 months ago

Tema vsCODE pffffffffffff

Hugolino B.G
11 months ago

​O curso Fundamentos de Javascript – Aprendendo a programar quando vai esta disponível de novo?

Digao Espectro
11 months ago

E ae mano … admiro teu trabalho! Espero que consiga chegar 50% desse teu conhecimento… Estou me esforçando cada dia mesmo iniciando agora nesse novo mundo! Agradeço por ter pessoas como vc que nos dá incentivo.

Léo Façanha
11 months ago

e essa camisinha da seleção aí boy, você é bolsonarista?

HeitorYT
11 months ago

Mas e se eu quiser fazer o mesmo em um banco de dados sqlite3?

Giovani Romão
11 months ago

O

Artur R
11 months ago

Opa! Muito show esse conteúdo. Sabe se já tem suporte para outras tecnologias no backend? Java + Spring por exemplo como backend?
E vc acha que webstream substitui totalmente websocket e SSE ou tem casos que estas outras tecnologias se encaixa melhor ?