JavaScript တွင် Promise ၏ အခြေအနေများ
Promise သည် အခြေအနေသုံးမျိုးအနက် တစ်ခုတွင် ရှိနိုင်သည်။ တည်ဆောက်စဥ်တွင် Promise သည် စောင့်ဆိုင်းနေသော (pending) အခြေအနေတွင်ရှိပြီး၊ ထို့နောက် ပြီးပြတ်သော (fulfilled) အခြေအနေသို့ ရောက်ရှိကာ ရရှိလာသောရလဒ်ကို ပြန်ပေးနိုင်သည်၊ သို့မဟုတ် ငြင်းပယ်ခံရသော (rejected) အခြေအနေသို့ ရောက်ရှိကာ ငြင်းပယ်ရသည့် အကြောင်းပြချက်ကို ပြန်ပေးနိုင်သည်။ အောက်ပါကုဒ်ကို လုပ်ဆောင်ခြင်းဖြင့် အခြေအနေတစ်ခုမှ အခြားတစ်ခုသို့ ကူးပြောင်းခြင်းကို သင်ကြည့်ရှုနိုင်သည်။
javascriptlet promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // true သို့မဟုတ် false ထားပါ
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('promise တွင် error');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // စက္ကန့်တိုင်း Promise ကို console တွင် ထုတ်ပြပါ
}, 1000);
fulfilled နှင့် rejected အခြေအနေများသည် ပြောင်းလဲ၍မရသော အခြေအနေများဖြစ်သည်ကို သတိပြုပါ။ Promise သည် ဤအခြေအနေများထဲက တစ်ခုသို့ ကူးပြောင်းသွားပါက၊ အခြားတစ်ခုသို့ ထပ်မံကူးပြောင်း၍ မရနိုင်တော့ပါ။ ဥပမာတစ်ခုဖြင့် ကြည့်ရှုကြည့်ပါမည်။ အောက်ပါကုဒ်တွင် reject ခေါ်ဆိုမှုသည် ပိုစောသောကြောင့်၊ resolve ခေါ်ဆိုမှုကို လျစ်လျူရှုထားမည်ဖြစ်သည်။
javascriptlet promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('error')), 1000);
setTimeout(() => resolve('ignored'), 2000);
});
အချိန်အနည်းငယ်ကြာပြီးနောက် အောင်မြင်စွာ ပြီးဆုံးသွားမည့် Promise တစ်ခုကို ဖန်တီးပါ။ ၎င်းကို console တွင် ထုတ်ပြပြီး ၎င်း၏ ကနဦးအခြေအနေနှင့် ပြီးဆုံးသွားသော အခြေအနေကို လေ့လာပါ။
အချိန်အနည်းငယ်ကြာပြီးနောက် မအောင်မြင်ဘဲ ပြီးဆုံးသွားမည့် Promise တစ်ခုကို ဖန်တီးပါ။ ၎င်းကို console တွင် ထုတ်ပြပြီး ၎င်း၏ ကနဦးအခြေအနေနှင့် ပြီးဆုံးသွားသော အခြေအနေကို လေ့လာပါ။