promises javascript
TRANSCRIPT
Promises
Carlos André Ferrari (@caferrari)
Function as first class citizen
No javascript, funções são cidadãos de primeira classe, ou seja, podem ser atribuídas a variáveis, passadas como parâmetro e retornadas de funções
Javascript é Single Thread
Apenas uma thread por processo.Tarefas assíncronas (I/O) são efetuadas pela libuv no nodejs ou pelo browser.
Event Loop
Callbacks
Callbacks
Problemas com Callbacks
Não existe forma elegante de capturar erros
Problemas com Callbacks
O NodeJS resolve assim:
Problemas com Callbacks
Chamadas Assíncronas podem ser paralelizadas, mas com callbacks perdemos essa vantagem
Problemas com Callbacks
Claro que dá para fazer requests paralelas com callback!
*Não faça isso!
Promises
Promise é uma forma mais elegante e poderosa de se trabalhar com callbacks.
Uma promise possui 3 estados: Pendente, Resolvida ou Rejeitada.
Promises
Criando uma Promise
https://github.com/kriskowal/q https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
Promises
Uma promise pode ser resolvida ou rejeitada
Promises
Uma exception é o mesmo que rejeitar
Promises
Uma promise só pode ser resolvida ou rejeitada uma vez:
Promises
O “then” retorna uma nova promise, mesmo que o retorno não seja uma.
Promises
O “then” pode ser encadeado livremente para simplificar transformações de dados
Promises
Isso acaba com o callback hell ou a christmas tree of doom
Promises
Isso acaba com o callback hell ou a christmas tree of doom
Isso faz as checagens sequencialmente!
Promises
Promise.all recebe uma lista de promises e retorna uma promise que é resolvida quando todas as promises são resolvidas
Promises
Promise.all recebe uma lista de promises e retorna uma promise que é resolvida quando todas as promises são resolvidas
Promises são legais