0
respostas

Pequeno codigo falando sobre Promise.

alert('O objetivo dessa operação é exibir a senha, caso você tenha permissão. Mas mesmo sem permissão, se usando o objeto Promise, a senha sera exibida.');


/* variável */

// senha salva
let password = prompt('Digite a senha por favor:');

// permissão para exibir a senha
let permission = false;


/* ------- */
/* rotina */

// exibi senha
function displayPassword() {

  return alert('A senha é: ' + password);

};

// trata o erro
function handleError() {

  alert('Mas, usando Promise será exibida. Uma Promise é um objeto que representa a possivél conclusão ou falha de uma operação assíncrona, em seguida podemos associar manipuladores ao valor de sucesso ou motivo de falha dessa uma operação. No caso de falha, podemos realizar uma ação chamada de tratamento de erro. O que faremos é acessar a variável, que permiti exibir a senha, e modifica-lá.')

  permission = true;

  alert('Pronto, já modifiquei a permissão. Agora de um ok para visualizar a senha. ');

  return displayPassword()
};


/* ------ */
/* lógica */

// declara a Promise
const handlePromise = new Promise((resolve, reject) => {

  // resgata o resultado da permissão
  if (permission == true) {// permissão concedida

    // sucesso na operação e o valor do cumprimento
    resolve('Permissão concedida!');

  } else {// permissão negada

    // falha na operação e seu motivo
    reject('Permissão negada! Sem permissão a senha não será exibida.');

  };
});


/* ---------- */
/* tratamento */

// A cadeia é composta de chamadas .then(), e normalmente (mas não necessariamente) tem um único .catch() no final, opcionalmente seguido por .finally(). Neste exemplo, a cadeia de promises é iniciada por um .then() que recebe ...
handlePromise

// metodo then, possui dois argumentos separados por vírgula, ambos são "call back functions", sendo uma para cumprida (sucesso) e outra para rejeitada (fracasso) respectivamente
.then((success) => {// cumprida

  alert(success);

  displayPassword();

}, (failure) => {// fracassada
   return Promise.reject(failure);
})

// método catch, útil para para manipulação de erros na composição da sua promise
.catch((failure) => {

  alert(failure);

  return handleError();

})