Stările unei promisiuni în JavaScript

O promisiune poate fi într-una din cele trei stări. La creare, promisiunea este în așteptare (pending), apoi poate deveni îndeplinită (fulfilled), returnând rezultatul obținut, sau respinsă (rejected), returnând motivul eșecului. Puteți observa tranziția dintr-o stare în alta rulând următorul cod:

javascriptlet promise = new Promise(function(resolve, reject) {
  setTimeout(function() {
    let isError = false; // setați fie true, fie false
    
    if (!isError) {
      resolve([1, 2, 3, 4, 5]);
    } else {
      reject('error in promise');
    }
  }, 3000);
});

setInterval(function() {
  console.log(promise); // la fiecare secundă afișăm promisiunea în consolă
}, 1000);

Rețineți că stările fulfilled și rejected sunt imuabile: dacă o promisiune a trecut într-una din aceste stări, atunci nu va mai putea să treacă în cealaltă. Să vedem un exemplu. În următorul cod, apelul reject se va întâmpla mai devreme, deci apelul resolve va fi ignorat:

javascriptlet promise = new Promise(function(resolve, reject) {
  setTimeout(() => reject(new Error('error')), 1000);
  setTimeout(() => resolve('ignored'), 2000);
});
Задание 1

Creați o promisiune care se va împlini cu succes după un anumit timp. Afișați-o în consolă și studiați starea sa inițială și cea finală.

Задание 2

Creați o promisiune care va eșua după un anumit timp. Afișați-o în consolă și studiați starea sa inițială și cea finală.