Tornando a interface mais responsiva graças ao Promessa adiada

Este artigo Ă© para Newfags . E mostra como, usando promessas atrasadas, vocĂȘ pode tornar a interface mais responsiva e reduzir o tempo de execução.

EntĂŁo, imagine que vocĂȘ tenha uma tarefa: implementar o botĂŁo "Editar perfil", clicando no qual um formulĂĄrio deve aparecer. E os valores para os campos deste formulĂĄrio sĂŁo carregados de forma assĂ­ncrona no servidor.

Interface incompatĂ­vel


Um exemplo da implementação desse botão.


O que acontece aqui e por que essa opção é ruim


Como vocĂȘ deve ter notado, a resposta a um clique em um botĂŁo ocorre com um longo atraso. Porque Vamos olhar para o grĂĄfico:



Como vocĂȘ pode ver, nessa abordagem, o script primeiro carrega os dados e executa o trabalho preparatĂłrio, e somente entĂŁo altera a interface. Isso Ă© um erro.
A interface deve, de alguma forma, responder às açÔes do usuårio o mais cedo possível.


Interface responsiva


Vamos melhorar um pouco as coisas. No exemplo a seguir, criamos um formulĂĄrio e o exibimos imediatamente . E somente entĂŁo anexamos os manipuladores e carregamos os dados do servidor.



Vejamos nosso grĂĄfico:



Como vocĂȘ pode ver, o tempo de execução total nĂŁo mudou. No entanto, agora o usuĂĄrio vĂȘ a reação Ă s suas açÔes muito antes.

Promessa diferida


VocĂȘ sabia que nĂŁo precisa esperar pelo Promise no mesmo local em que o criou?

const promise = fetch() //      , ,    fetch() const response = await promise //   promise 


Assim, vocĂȘ pode minimizar o tempo de inatividade - quando o navegador aguarda a conclusĂŁo da operação assĂ­ncrona e nĂŁo estĂĄ ocupado com nada.
Execute operaçÔes assíncronas longas o mais cedo possível, mas espere que elas sejam concluídas o mais råpido possível.

Agora, tendo em mente essa regra, voltemos ao nosso formulĂĄrio.
No exemplo a seguir, enviaremos uma solicitação para baixar dados imediatamente apĂłs um clique, mas nĂŁo esperaremos que eles sejam concluĂ­dos. Em vez de tempo de inatividade, enquanto aguardamos uma resposta do servidor, faremos um trabalho Ăștil - criar um formulĂĄrio e exibi-lo.



E aqui estĂĄ o que temos:



Como vocĂȘ pode ver no grĂĄfico, no inĂ­cio dois processos sĂŁo executados em paralelo. Assim, economizamos quase um segundo de tempo de execução.

Espero que este material seja Ăștil para alguĂ©m

Source: https://habr.com/ru/post/pt472420/


All Articles