Skip to content

Instantly share code, notes, and snippets.

@talyssonoc
Last active February 12, 2024 00:06
Show Gist options
  • Save talyssonoc/8cac925c809d93e915ed404695e0666b to your computer and use it in GitHub Desktop.
Save talyssonoc/8cac925c809d93e915ed404695e0666b to your computer and use it in GitHub Desktop.

Desafio de promises

Faça a requisição de 95 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.

Após carregar todos os posts, carregar os usuários de todos os 95 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 */
  }
]

Escrever testes.

Instruções

  • Implemente o desafio duas vezes:
    1. Utilizando somente async/await
    2. Somente com .then/.catch
  • Caso tenha utilizado recursão em alguma das implementações, tente agora sem recursão
  • Escreva testes
    • Os testes de uma implementação devem funcionar na outra sem nenhuma modificação
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment