JavaScript හි පොරොමිස් වල අසාමාන්ය තත්වයන්
දැන් අපි පොරොමිසයක් තුළ ඇතිවන අසාමාන්ය තත්වයන් හැසිරවීම ඉගෙන ගනිමු. එවැනි තත්වයක් ඇතිවන විට, අපි පොරොමිසය ප්රතික්ෂේප කළ යුත්තේ පොරොමිස් ශ්රිතයේ දෙවන පරාමිතියට ස්වයංක්රීයව ලැබෙන විශේෂ ප්රතික්ෂේප කිරීමේ ශ්රිතය භාවිතා කරමිනි:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
පොරොමිස් ශ්රිතය තුළ, සෑම දෙයක්ම සාමාන්ය පරිදි සිදුවුනේ නම්
resolve ශ්රිතය හෝ අසාමාන්ය තත්වයක් ඇතිවුනේ නම්
reject ශ්රිතය අපි භාවිතා කළ යුතුය:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // පොරොමිස් දත්ත
} else {
reject('error in promise'); // ඔබගේ දෝෂ පණිවුඩය
}
}, 3000);
});
ඉන්පසු, then ක්රමයේදී, පරාමිති වශයෙන් එකක් නොව
ශ්රිත දෙකක් යොමු කළ යුතුය: පළමුවැන්න ක්රියාත්මක වන්නේ
පොරොමිසය සාමාන්ය පරිදි ක්රියාත්මක වුවහොත් (resolved),
දෙවැන්න - දෝෂයක් සමඟ ක්රියාත්මක වුවහොත් (rejected):
promise.then(
function(result) {
console.log(result); // පොරොමිස් ප්රතිඵලය ප්රදර්ශනය කරයි
},
function(error) {
console.log(error); // දෝෂ පණිවුඩය ප්රදර්ශනය කරයි
}
);
සාමාන්යයෙන්, ඉහත දක්වා ඇති කේතය වඩාත් සංයුක්ත ලෙස මෙසේ ලියනු ලැබේ:
promise.then(function(result) {
console.log(result); // පොරොමිස් ප්රතිඵලය ප්රදර්ශනය කරයි
}, function(error) {
console.log(error); // දෝෂ පණිවුඩය ප්රදර්ශනය කරයි
});
0 සිට 5 දක්වා අහඹු අංක ජනනය කරන
අසින්ක්රෝනස් කේතයක් සාදන්න.
මෙය පොරොමිසයක් තුළට අවුල්ලන්න. පොරොමිසය එහි ප්රතිඵලය ලෙස
එකක් ජනිත අංකයෙන් බෙදීමේ ප්රතිඵලය ආපසු ලබා දෙනු ඇත.
ශුන්යයෙන් බෙදීම සිදුවුවහොත් පොරොමිසය දෝෂයක් සමඟ ක්රියාත්මක විය යුතු අතර,
අනෙකුත් සියලුම අවස්ථාවලදී සාර්ථකව ක්රියාත්මක විය යුතුය.