⊗jsSpPrmFC 171 of 294 menu

Criação de Promises Resolvidas em JavaScript

Às vezes, você pode precisar criar uma promise já resolvida. Para isso, existem dois métodos: o método Promise.resolve cria uma promise resolvida com sucesso, Promise.reject cria uma promise rejeitada. Como parâmetro, esses métodos recebem o que se tornará o resultado ou o erro da promise, respectivamente.

Quando podemos precisar de uma promise já resolvida? Vejamos um exemplo. Suponha que temos uma função que recebe um número como parâmetro, faz algo com ele de forma assíncrona e retorna uma promise com o resultado:

function func(num) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); }

Usaremos nossa função da seguinte forma:

func(5).then(function(res) { console.log(res); // exibirá 25 });

Suponha agora que decidimos que nossa operação assíncrona será realizada apenas se um número maior que zero for passado. Caso contrário, o resultado da função deve ser zero:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return 0; // resultado zero } }

No entanto, agora acontece que a função retorna ou uma promise, ou um número. Por causa disso, não podemos mais aplicar o método then ao resultado da função, pois no caso de a função retornar um número, obteremos um erro:

func(0).then(function(res) { // erro, aplicando o método then a zero });

O método Promise.resolve nos ajudará a corrigir o problema:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return Promise.resolve(0); // retornamos uma promise, e não um número } }

Suponha agora que decidimos que para o zero passado devemos retornar zero, e para números menores que zero - uma exceção. O método Promise.reject nos ajudará nisso:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else if (num === 0) { return Promise.resolve(0); } else { return Promise.reject('número incorreto'); // retornaremos uma promise rejeitada } }
Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar