⊗jsSpPrmChE 169 of 294 menu

JavaScript တွင် Promise များ၏ကွင်းဆက်များအတွင်းရှိ ခြွင်းချက်များ

အကြောင်းအမျိုးမျိုးကြောင့် ကျွန်ုပ်တို့၏ Promise သည် အမှားတစ်ခုနှင့် ပြီးဆုံးသွားသည်ဆိုပါစို့။

let promise = new Promise(function(resolve, reject) { setTimeout(function() { reject('error'); }, 3000); });

ဤကိစ္စတွင် ကုဒ်အလုပ်လုပ်ခြင်းသည် တန်းလန်း အမှားကို ကိုင်တွယ်သည့်လုပ်ဆောင်ချက် ပါရှိသော then သို့မဟုတ် ပထမဆုံးတွေ့ရှိရသော catch သို့ ချက်ချင်းပင် ကူးပြောင်းသွားမည်ဖြစ်သည်။

ပထမအခြေအနေအတွက် နမူနာတစ်ခုမှာ

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; }, function(error) { // အလုပ်လုပ်ခြင်းသည် ဒီကို တန်းလန်းကူးပြောင်းသွားမည် } ).then( function(result) { console.log(result); } );

ဒုတိယအခြေအနေအတွက် နမူနာတစ်ခုမှာ

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { // အလုပ်လုပ်ခြင်းသည် ဒီကို တန်းလန်းကူးပြောင်းသွားမည် } ).then( function(result) { console.log(result); } );

အမှားကိုင်တွယ်သည့်လုပ်ဆောင်ချက်တွင် လုပ်ဆောင်နည်း နှစ်မျိုးရှိသည်။ ၎င်းသည် ခြွင်းချက်အခြေအနေကို ကိုင်တွယ်နိုင်လျှင် return မှတစ်ဆင့် ရလဒ်ကို ပြန်ပေးနိုင်ပြီး အလုပ်လုပ်ခြင်းသည် ကွင်းဆက်တစ်လျှောက် ဆက်လက်ဆင်နွှဲမည်ဖြစ်သည်။ အကယ်၍ ၎င်းသည် အမှားကို ကိုင်တွယ်နိုင်ခြင်းမရှိပါက ဘာမှမပြန်ဘဲထားနိုင်သည် သို့မဟုတ် throw မှတစ်ဆင့် ခြွင်းချက်တစ်ခုကို ပစ်နိုင်သည်။ ဤကိစ္စတွင် အလုပ်လုပ်ခြင်းသည် နောက်အမှားဖမ်းယူသူ (then သို့မဟုတ် catch - ဘယ်ဟာက အရင်တွေ့မည်နည်း) ထံသို့ ကူးပြောင်းသွားမည်ဖြစ်သည်။

ပုံမှန်အားဖြင့် ကွင်းဆက်၏အမှားအားလုံးကို တစ်နေရာတည်းတွင် ဖမ်းယူကြသည်။ ကွင်းဆက်၏အဆုံးတွင် catch ကို ထားရှိသည်။

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { // အမှားဖြစ်ပါက ဒီကိုရောက်လာမည် } );

ဤသို့ဖြင့် ခြွင်းချက်သည် Promise ကိုယ်၌ပင်ဖြစ်စေ၊ သို့မဟုတ် ကွင်းဆက်ရှိ မည်သည့်အဆင့်၌မဆို throw မှတစ်ဆင့် ပစ်ချခံရနိုင်သည်။

promise.then( function(result) { return result + '1'; } ).then( function(result) { if (အားလုံးကောင်းမွန်သည်) { return result + '2'; } else { throw new Error('အမှား'); // အနီးဆုံးဖမ်းယူသူထံသို့ ကူးပြောင်းသည် } } ) .then( function(result) { return result + '3'; } ).catch( function(error) { // အနီးဆုံးဖမ်းယူသူ } );

catch သည် အမှားကို ရှာဖွေစစ်ဆေးရန် အတွက်သာ လိုအပ်ကြောင်း သတိပြုပါ။ ၎င်းကို ဖြေရှင်းနိုင်သလား မဖြေရှင်းနိုင်သလား။ အကယ်၍ အမှားကို ဖြေရှင်းနိုင်ပါက catch သည် ၎င်း၏ဖြေရှင်းချက်ကို ၎င်း၏နောက်မှလာမည့် then ထံသို့ ပေးပို့ရမည်။ အကယ်၍ ဖြေရှင်း၍မရပါက (သို့မဟုတ် ဤ catch သည် ၎င်းကို မည်သို့ဖြေရှင်းရမည်ကို မသိပါက) ကျွန်ုပ်တို့သည် ဘာမှမပြန်ဘဲထားရမည် သို့မဟုတ် ခြွင်းချက်တစ်ခုကို ပစ်ရမည်။

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { if (အမှားကိုဖြေရှင်းနိုင်သည်) { return 'ဒေတာ'; // နောက် then သို့ ပေးပို့သည် } else { // ဘာမှမပြန်ဘဲထားသည် သို့မဟုတ် ခြွင်းချက်ပစ်သည် } } ).then( function(result) { // ဒီမှာ အမှားကို ဖြေရှင်းသည် } );
မြန်မာ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ဝက်ဘ်ဆိုက် လုပ်ဆောင်ခြင်း၊ ဆန်းစစ်လေ့လာခြင်းနှင့် ပုဂ္ဂလိကပြုပြင်ခြင်းအတွက် ကျွန်ုပ်တို့သည် cookie များကို အသုံးပြုပါသည်။ ဒေတာများကို ပြုပြင်ခြင်းသည် ကိုယ်ရေးကိုယ်တာ မူဝါဒအတိုင်း ဖြစ်ပါသည်။
အားလုံးလက်ခံရန် ပြင်ဆင်ရန် ငြင်းပယ်ရန်