Vamos montar uma listagem de blog posts, com usuários e comentários. A API que vamos usar pode ser encontrada no seguinte repositório: https://github.com/typicode/json-server
- Faça a requisição de 115 posts, de 20 em 20 posts por request, da URL https://jsonplaceholder.typicode.com/posts, a documentação da paginação está aqui https://github.com/typicode/json-server#paginate.
- Estas requisições devem ser feitas sequencialmente (só requisita os próximos 20 depois que terminar de requisitar tudo dos 20 anteriores)
- Para cada vez que 20 posts forem carregados, carregar todos os comentários de cada um deles de maneira concorrente/paralela (ou seja, requisitar os comentários de todos os 20 posts ao mesmo tempo).
- Para pegar os comentários de um post você usa a URL https://jsonplaceholder.typicode.com/posts/ID_DO_POST/comments. Isso deve ser feito antes de carregar os próximos 20 posts.
- Renderizar a lista apenas após todas as requisições anteriores estarem completas
- Tratar qualquer erro que possa acontecer durante a requisição
- Após carregar todos os posts, carregar os usuários de todos os 115 posts concorrentemente/paralelamente.
- Para carregar um usuário usa-se a URL https://jsonplaceholder.typicode.com/users/ID_DO_USUARIO. Lembrando que um mesmo usuário pode ter mais de um post, então o mesmo usuário não deve ser carregado duas vezes
No final, precisaremos ter a seguinte estrutura:
[
{
/* ...dados do post, /
user: {}/ dados do user autor do post /,
comments: []/ array de comentários desse post */
}
]
- Refatorar todo o código para usar async/await no lugar de .then .catch
- Agora vamos adicionar links de paginação na listagem. Refatorar a função para não carregar todos os posts de uma só vez, ao invés disso devemos ter a paginação sob demanda;
- O comportamento da listagem deve ser o mesmo das tarefas anteriores, mostrando todos os comentários e usuários dos posts carregados para a página;
- Não requisitar o usuário caso já tenha sido carregado em alguma pagina anterior;