Izņēmuma situācijas promisos JavaScript
Tagad iemācīsimies apstrādāt izņēmuma situācijas, kas radās promisa iekšienē. Šādas situācijas gadījumā mums ir jānoraida promiss, izmantojot īpašu noraidīšanas funkciju, kas automātiski nonāk otrajā promisa funkcijas parametrā:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Promisa funkcijas iekšienē mums ir jāizsauc
resolve, ja viss notika normāli, vai
reject, ja radās izņēmuma
situācija:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // promisa dati
} else {
reject('kļūda promisā'); // jūsu kļūdas teksts
}
}, 3000);
});
Pēc tam then metodā kā parametrus jāpadod
nevis viena, bet divas funkcijas: pirmā darbosies,
ja promiss nostrādāja normāli (izpildījās),
bet otrā - ja nostrādāja ar kļūdu (tika noraidīts):
promise.then(
function(result) {
console.log(result); // izvadīs promisa rezultātu
},
function(error) {
console.log(error); // izvadīs kļūdas tekstu
}
);
Parasti iepriekš minētais kods tiek rakstīts kompaktāk, šādi:
promise.then(function(result) {
console.log(result); // izvadīs promisa rezultātu
}, function(error) {
console.log(error); // izvadīs kļūdas tekstu
});
Izveidojiet asinhronu kodu, kas ģenerēs
nejaušus skaitļus no 0 līdz 5.
Ietveriet to visu promisā. Ļaujiet promisam kā rezultātu
atgriezt vienības dalījuma rezultātu ar ģenerēto
skaitli. Ļaujiet promisam izpildīties ar kļūdu,
ja notika dalījums ar nulli, un veiksmīgi
visos pārējos gadījumos.