⊗jsSpPrmFC 171 of 294 menu

JavaScript හි සාර්ථක වාචික පොරොන්දු (Promises) සෑදීම

සමහර විට ඔබට දැනටමත් සම්පූර්ණ කරන ලද වාචික පොරොන්දුවක් (promise) සෑදීමට අවශ්‍ය විය හැක. මේ සඳහා ක්‍රම දෙකක් තිබේ: Promise.resolve ක්‍රමය සාර්ථකව සම්පූර්ණ වූ වාචික පොරොන්දුවක් (promise) සාදයි, Promise.reject ක්‍රමය ප්‍රතික්ෂේප කරන ලද වාචික පොරොන්දුවක් (promise) සාදයි. මෙම ක්‍රම පරාමිතියක් ලෙස වාචික පොරොන්දුවේ (promise) ප්‍රතිඵලය හෝ දෝෂය අනුක්‍රමයෙන් ලබා ගනී.

දැනටමත් සම්පූර්ණ කරන ලද වාචික පොරොන්දුවක් (promise) කවදා අවශ්‍ය විය හැකිද? අපි උදාහරණයක් බලමු. අපට ඇතැයි සිතමු යම් ශ්‍රිතයක්, එය පරාමිතියක් ලෙස සංඛ්‍යාවක් ලබා ගනී, එය සමඟ අසමමුහුර්ත ලෙස යමක් කරන අතර ප්‍රතිඵලය සහිත වාචික පොරොන්දුවක් (promise) ආපසු ලබා දෙයි:

function func(num) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); }

අපි අපගේ ශ්‍රිතය පහත ආකාරයෙන් භාවිතා කරන්නෙමු:

func(5).then(function(res) { console.log(res); // 25 ප්‍රදර්ශනය කරයි });

දැන් අපි තීරණය කර ඇතැයි සිතමු, අපගේ අසමමුහුර්ත ක්‍රියාවලිය අපි සිදු කරන්නේ, පවරන ලද සංඛ්‍යාව ශුන්‍යයට වඩා විශාල නම් පමණි. එසේ නොමැති නම් ශ්‍රිතයේ ප්‍රතිඵලය ශුන්‍ය විය යුතුය:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return 0; // ශුන්‍ය ප්‍රතිඵලය } }

කෙසේ වෙතත්, දැන් එය ශ්‍රිතය ආපසු ලබා දෙන්නේ වාචික පොරොන්දුවක් (promise) හෝ සංඛ්‍යාවක් බවට පත්වේ. මෙය නිසා අපට තවදුරටත් ශ්‍රිතයේ ප්‍රතිඵලයට then ක්‍රමය යෙදිය නොහැක, ශ්‍රිතය සංඛ්‍යාවක් ආපසු ලබා දෙන අවස්ථාවලදී අපට දෝෂයක් ලැබෙනු ඇත:

func(0).then(function(res) { // දෝෂය, අපි then ක්‍රමය ශුන්‍යයට යොදමු });

Promise.resolve ගැටලුව නිවරදි කිරීමට අපට උපකාර කරයි:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return Promise.resolve(0); // අපි වාචික පොරොන්දුවක් (promise) ආපසු ලබා දෙමු, සංඛ්‍යාවක් නොවේ } }

දැන් අපි තීරණය කර ඇතැයි සිතමු, පවරන ලද ශුන්‍යය සඳහා අපි ශුන්‍යය ආපසු ලබා දිය යුතු අතර, සංඛ්‍යා ශුන්‍යයට වඩා අඩු නම් - අපසරණයක්. මේ සඳහා අපට Promise.reject ක්‍රමය උපකාරී වේ:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else if (num === 0) { return Promise.resolve(0); } else { return Promise.reject('incorrect number'); // අපි ප්‍රතික්ෂේප කරන ලද වාචික පොරොන්දුවක් (promise) ආපසු ලබා දෙමු } }
සිංහල
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
අපි වෙබ් අඩවිය ක්‍රියාත්මක කිරීම, විශ්ලේෂණය සහ පුද්ගලීකරණය සඳහා කුකී භාවිතා කරමු. දත්ත සැකසීම සිදුකරනු ලබන්නේ ගෝපනීයතා ප්‍රතිපත්තිය අනුව ය.
සියල්ල පිළිගන්න කොන්දේසි ප්‍රතික්ෂේප කරන්න