Вазъиятҳои промис дар 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('хато дар промис');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // ҳар сонияяк промисро ба консол мебарорем
}, 1000);
Дар хотир доред, ки вазъиятҳои fulfilled ва rejected тағирнопазиранд: агар промис гузашт ба яке аз ин вазъиятҳо, пас дигар наметавонад ба вазъияти дигар гузарад. Биёед дар мисол назар кунем. Дар коди зерин фарохонӣ кардани reject пештар рӯй медиҳад, бинобар ин фарохонӣ кардани resolve нодида гирифта мешавад:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('хато')), 1000);
setTimeout(() => resolve('нодида гирифта шуд'), 2000);
});
Промисеро созед, ки баъд аз замони муайян бо муваффақият иҷро шавад. Онро ба консол бароред ва вазъияти ибтидоии ва хотимавии онро омӯзед.
Промисеро созед, ки баъд аз замони муайян бо нокомӣ иҷро шавад. Онро ба консол бароред ва вазъияти ибтидоии ва хотимавии онро омӯзед.