roger-melo-treinamentos / curso-de-js-roger-melo

Repositório de informações do CJRM
494 stars 172 forks source link

Resumo da Aula Introdução a promises - Aula 04-03 da etapa 11 #1937

Closed ricardopontesdantas closed 2 years ago

ricardopontesdantas commented 2 years ago

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))
Roger-Melo commented 2 years ago

Excelente @ricardopontesdantas! Rumo à fluência 🙌🏻