Состояния промиса в JavaScript

Вето може да биде во една од три состојби. При креирање, вето е во состојба на чекање (pending), а потоа може да стане исполнето (fulfilled), враќајќи го добиениот резултат, или одбиено (rejected), враќајќи причина за одбивање. Можете да го видите преминот од една состојба во друга со стартување на следниот код:

javascriptlet promise = new Promise(function(resolve, reject) {
  setTimeout(function() {
    let isError = false; // поставете или true, или false
    
    if (!isError) {
      resolve([1, 2, 3, 4, 5]);
    } else {
      reject('error in promise');
    }
  }, 3000);
});

setInterval(function() {
  console.log(promise); // секоја секунда го печатиме вето во конзола
}, 1000);

Имајте предвид дека состојбите fulfilled и rejected се непроменливи: ако вето преминало во една од овие состојби, тогаш веќе нема да може да премине во друга. Ајде да погледнеме на пример. Во следниот код, повикот reject ќе се случи порано, затоа повикот resolve ќе биде игнориран:

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

Направете вето кое ќе се исполни со успех по одредено време. Испечатете го во конзола и проучете ја неговата почетна состојба и завршната.

Задание 2

Направете вето кое ќе заврши со неуспех по одредено време. Испечатете го во конзола и проучете ја неговата почетна состојба и завршната.