Состояния промиса в JavaScript
Вето може да биде во една од три состојби. При креирање, вето е во состојба на чекање (pending), а потоа може да стане исполнето (fulfilled), враќајќи го добиениот резултат, или одбиено (rejected), враќајќи причина за одбивање. Можете да го видите преминот од една состојба во друга со стартување на следниот код:
let 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 ќе биде игнориран:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('error')), 1000);
setTimeout(() => resolve('ignored'), 2000);
});
Направете вето кое ќе се исполни со успех по одредено време. Испечатете го во конзола и проучете ја неговата почетна состојба и завршната.
Направете вето кое ќе заврши со неуспех по одредено време. Испечатете го во конзола и проучете ја неговата почетна состојба и завршната.