Promise é um objeto que representa o sucesso ou a falha de uma operação assíncrona. Para criar uma nova promise, eu invoco o new Promise() que recebe uma função como argumento. Essa função terá dois parâmetros: resolve() e reject(), que são funções embutidas da API de promises. Quando eu obter os dados, meu resultado estará no resolve. Caso algum erro aconteça, meu resultado estará no reject.
Para acessarmos o resultado de sucesso de uma promise, precisamos encadear no retorno da promise o método then(), que recebe como argumento uma função. Essa função terá um parâmetro value, e o valor que esse parâmetro recebe é o passado na invocação do resolve(). E para acessar o resultado de falha, encadeamos na promise o método catch(), que recebe como argumento uma função. Essa função terá um parâmetro error, e o valor desse error é o passado na invocação do catch().
Vamos ver na prática:
const getPokemon = url => new Promise((resolve, reject) => {
const request = new XMLHttpRequest();
request.addEventListener('readystatechange', () => {
const isRequestOk = request.readyState === 4 && request.status === 200
const isRequestNotOk = request.readyState === 4
if (isRequestOk) {
const data = JSON.parse(request.responseText)
resolve(data);
}
if (isRequestNotOk) {
reject('Os dados da API não foram obtidos');
}
});
request.open('GET', url);
request.send();
});
getPokemon('https://pokeapi.co/api/v2/pokemon/1')
.then(pokemon => console.log(pokemon))
.catch(error => console.log(error))
Promise é um objeto que representa o sucesso ou a falha de uma operação assíncrona. Para criar uma nova promise, eu invoco o
new Promise()
que recebe uma função como argumento. Essa função terá dois parâmetros:resolve()
ereject()
, que são funções embutidas da API de promises. Quando eu obter os dados, meu resultado estará noresolve
. Caso algum erro aconteça, meu resultado estará noreject
.Para acessarmos o resultado de sucesso de uma promise, precisamos encadear no retorno da promise o método
then()
, que recebe como argumento uma função. Essa função terá um parâmetrovalue
, e o valor que esse parâmetro recebe é o passado na invocação doresolve()
. E para acessar o resultado de falha, encadeamos na promise o métodocatch()
, que recebe como argumento uma função. Essa função terá um parâmetroerror
, e o valor desseerror
é o passado na invocação docatch()
.Vamos ver na prática: