promises javascript

Post on 21-Jan-2017

211 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

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

top related