promises javascript

27
Promises Carlos André Ferrari (@caferrari)

Upload: carlos-ferrari

Post on 21-Jan-2017

211 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Promises Javascript

Promises

Carlos André Ferrari (@caferrari)

Page 2: Promises Javascript

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

Page 3: Promises Javascript
Page 4: Promises Javascript
Page 5: Promises Javascript

Javascript é Single Thread

Apenas uma thread por processo.Tarefas assíncronas (I/O) são efetuadas pela libuv no nodejs ou pelo browser.

Page 6: Promises Javascript

Event Loop

Page 7: Promises Javascript

Callbacks

Page 8: Promises Javascript

Callbacks

Page 9: Promises Javascript

Problemas com Callbacks

Não existe forma elegante de capturar erros

Page 10: Promises Javascript

Problemas com Callbacks

O NodeJS resolve assim:

Page 11: Promises Javascript

Problemas com Callbacks

Chamadas Assíncronas podem ser paralelizadas, mas com callbacks perdemos essa vantagem

Page 12: Promises Javascript

Problemas com Callbacks

Claro que dá para fazer requests paralelas com callback!

*Não faça isso!

Page 13: Promises Javascript
Page 14: Promises Javascript

Promises

Promise é uma forma mais elegante e poderosa de se trabalhar com callbacks.

Uma promise possui 3 estados: Pendente, Resolvida ou Rejeitada.

Page 15: Promises Javascript

Promises

Page 16: Promises Javascript

Criando uma Promise

https://github.com/kriskowal/q https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

Page 17: Promises Javascript

Promises

Uma promise pode ser resolvida ou rejeitada

Page 18: Promises Javascript

Promises

Uma exception é o mesmo que rejeitar

Page 19: Promises Javascript

Promises

Uma promise só pode ser resolvida ou rejeitada uma vez:

Page 20: Promises Javascript

Promises

O “then” retorna uma nova promise, mesmo que o retorno não seja uma.

Page 21: Promises Javascript

Promises

O “then” pode ser encadeado livremente para simplificar transformações de dados

Page 22: Promises Javascript

Promises

Isso acaba com o callback hell ou a christmas tree of doom

Page 23: Promises Javascript

Promises

Isso acaba com o callback hell ou a christmas tree of doom

Isso faz as checagens sequencialmente!

Page 24: Promises Javascript

Promises

Promise.all recebe uma lista de promises e retorna uma promise que é resolvida quando todas as promises são resolvidas

Page 25: Promises Javascript

Promises

Promise.all recebe uma lista de promises e retorna uma promise que é resolvida quando todas as promises são resolvidas

Page 26: Promises Javascript

Promises são legais

Page 27: Promises Javascript