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.
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
Tudo bem, você venceu! Me inscrevi no seu canal… Você é incrível ❤️
Ei, vc q tá lendo isso hoje… Eu sei q vc só ta aqui pela rinha de frontend, safado… eu tbm
Isso é muito interessante
Que conteúdo bom. Um exemplo para mim. Como ficaria um código assim em C# ?
Esse conteúdo de webstreams é abordado com mais detalhes no curso JS Expert?
Muito top cara, quanto tempo você gasta para produzir um conteúdo desse de praticamente 1h ?
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.
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?
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.
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!
Gostaria de saber se o TREINAMENTO SOBRE STREAMS e' em ingles e valor tambem e' em dolar ?
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
Tema vsCODE pffffffffffff
O curso Fundamentos de Javascript – Aprendendo a programar quando vai esta disponível de novo?
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.
e essa camisinha da seleção aí boy, você é bolsonarista?
Mas e se eu quiser fazer o mesmo em um banco de dados sqlite3?
O
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 ?