Cezar Luiz

Javascript e outras coisas

JavaScript to the rescue! #Promises

E ai folks, tudo certinho? Gostaram do último post? Espero que tenha sido útil :)

Como prometido, vamos para a nossa segunda parte dessa série: Promises.


Promises são, promessas! Ah vá!

Mas é verdade, tem todo um conceito por trás das coisas e não ia deixar de ser diferente no mundo da programação.

O que as Promises mais solucionam ao meu ver, são os problemas que temos com callbacks em chamadas assíncronas. Já ouviu falar em callback hell?

callback hell

Pois bem, usamos callback em tudo hoje, quando uma animação termina, quando uma chamada ajax termina, dá erro, dá sucesso ou o próprio progresso dela. E para não acontecer essas coisas e deixar nosso código mais limpo e elegante, as Promises chegam com tudo!

Exemplos! Me dê exemplos!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Exemplo simples em JS puro usando Promises
var jax = function(opts) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest;

xhr.open(opts.method, opts.url, opts.async || true);

// Eventos
xhr.addEventListener('load', resolve);
xhr.addEventListener('error', reject);
xhr.addEventListener('abort', reject);

xhr.send();
});
};

Quando instanciamos um objeto Promise, ele nos oferece dois parâmetros, resolve e reject.