ES2015 - Promises no Javascript (Parte 1)



01 - Callbacks e Callback Hell

Há algum tempo atrás, todas as vezes em que desenvolvíamos uma aplicação com Javascript e essa começava a escalar, crescer mais e mais, agregando mais e mais funções onde cada uma estava conectada com a outra e, principalmente, dependia uma da outra, tínhamos que utilizar as chamadas Callbacks, que são, basicamente, funções que chamam outra funções em seus parâmetros.

Exemplo:


Nesse exemplo, a função forEach, que pertence ao prototype Array, chama uma função anônima que retorna cada um dos elementos precedido do seu índice.

Ok, legal, quando tempo uma função chamando outra função é tranquilo de lidar, mas imagine por exemplo se fossem 4, 5 ou mais funções sendo chamadas uma dentro de outra. Isso é que o chamamos de "Callback Hell" pois aí fica fácil perder o controle da sua aplicação já que quando for precisar escrever testes ou debugar, tudo vira um inferno para o desenvolvedor.


Foi aí que foi introduzido mais recentemente no Javascript as chamadas Promises. A princípio se tratava de uma biblioteca externa e que só depois de 2015 que foi implementada por completo na linguagem.

02 - O que são e como funcionam as Promises?

Como o próprio nome já indica, Promises são Promessas, é um indicativo de que você possa receber, ou não, algo a partir de uma solicitação feita anteriormente.

Por exemplo, vamos supor que você precise mostrar uma lista de produtos disponíveis num supermercado, a princípio você terá uma função que busca no banco de dados a lista de produtos disponíveis, com seus saldos e preços e também terá uma outra função que organiza e mostra essa lista na tela para o usuário. Bom, para essa segunda função funcionar, será necessário que a primeira tenha sido executada e tenha trazido as informações, correto? Só temos um problema aqui: o Javascript é uma linguagem assíncrona, ou seja, se você simplesmente chamar a primeira função e logo depois chamar a segunda, o que vai ocorrer é um erro.


Para evitar esse erro, utilizamos as Promises, especificando uma função anônima que recebe dois parâmetros: resolve e reject. Sendo o primeiro para tratar a informação quando recebida e o segundo para quando há um erro com o pedido.

Exemplo:



Nesse exemplo eu fiz questão de utilizar a função "fetch" pois ela em si já utiliza o protocolo de Promises.

03 - Como tratar erros em Promises?

Acima nós vemos como podemos obter as respostas a partir das promisses usando a função ".then()", correto? Ela serve para retornar o parâmetro resolve da promise. Caso precisemos tratar o erro, podemos utilizar a função ".catch()".


Por hoje é só mas pretendo aprofundar mais em posts futuros pois tem muita coisa que dá pra fazer com Promises.
Inclusive, pretendo fazer um post sobre o uso de Promises e Obervables e em qual situação usar um ou o outro.

Valeu!


Próximo
«Anterior
Anterior
Próximo Post »
1 Komentar
avatar

If 바카라 may have} needs half in} multiple of} cases, it's beneficial to make use of the CPU with larger numbers of cores and graphics card with larger vram. You can discuss with this tutorial How to open as many cases of LDPlayer as attainable. Your technique is simply as effective as your capability to grasp its implications.

Balas