JavaScript ကတိများ
"ရလဒ်တစ်ခုကို ငါကတိပေးတယ်!"
"ကုဒ်ထုတ်လုပ်ခြင်း" သည် အချိန်အနည်းငယ်ကြာနိုင်သော ကုဒ်ဖြစ်သည်။
"Consuming code" သည် ရလဒ်ကို စောင့်ရမည့် ကုဒ်ဖြစ်သည်။
Promise သည် ကုဒ်ထုတ်လုပ်ခြင်းနှင့် ကုဒ်စားသုံးခြင်းတို့ကို ချိတ်ဆက်ပေးသည့် JavaScript အရာဝတ္ထုတစ်ခုဖြစ်သည်။
JavaScript Promise Object
JavaScript Promise အရာဝတ္တုတွင် ထုတ်လုပ်သောကုဒ်နှင့် စားသုံးကုဒ်သို့ ခေါ်ဆိုမှုများ နှစ်ခုလုံးပါရှိသည်-
Promise Syntax
let myPromise = new Promise(function(myResolve, myReject) {
// "Producing Code" (May take some time)
myResolve(); // when successful
myReject(); // when error
});
// "Consuming Code" (Must wait for a fulfilled Promise)
myPromise.then(
function(value) { /* code if successful */ },
function(error) { /* code if some error */ }
);
ထုတ်လုပ်သောကုဒ်သည် ရလဒ်ကိုရရှိသောအခါ၊ ပြန်ခေါ်မှုနှစ်ခုထဲမှ တစ်ခုကို ခေါ်ဆိုသင့်သည်-
ရလဒ် | ဖုန်းဆက်ပါ။ |
---|---|
အောင်မြင်မှု | myResolve(ရလဒ်တန်ဖိုး) |
အမှား | myReject(အမှားအယွင်းအရာဝတ္ထု) |
Promise Object Properties
JavaScript Promise object သည်-
- ဆိုင်းငံ့ထားသည်။
- ပြည့်စုံခြင်း။
- ပယ်ချသည်။
Promise အရာဝတ္ထုသည် ဂုဏ်သတ္တိနှစ်ခုကို ပံ့ပိုးသည်- အခြေအနေ နှင့် ရလဒ် ။
Promise အရာဝတ္ထုသည် "ဆိုင်းငံ့" (အလုပ်လုပ်နေချိန်တွင်) ရလဒ်သည် သတ်မှတ်မထားပါ။
Promise object တစ်ခု "ပြည့်စုံသောအခါ" ရလဒ်သည် တန်ဖိုးတစ်ခုဖြစ်သည်။
Promise object တစ်ခုကို "ငြင်းပယ်ခံရသောအခါ၊ ရလဒ်သည် error object ဖြစ်သည်။
myPromise.state | myPromise.ရလဒ် |
---|---|
"ဆိုင်းငံ့" | သတ်မှတ်မထားသော |
"ပြည့်စုံ" | ရလဒ်တန်ဖိုး |
"ပယ်ချ" | error object တစ်ခု |
Promise properties ၏ အခြေအနေ နှင့် ရလဒ်ကို သင်ဝင်ရောက်၍မရပါ ။
ကတိများကို ကိုင်တွယ်ရန် Promise နည်းလမ်းကို အသုံးပြုရပါမည်။
ကတိပေးနည်း
ဤသည်မှာ ကတိကိုအသုံးပြုနည်းဖြစ်သည်။
myPromise.then(
function(value) { /* code if successful */ },
function(error) { /* code if some error */ }
);
Promise.then() သည် အငြင်းအခုံနှစ်ခု၊ အောင်မြင်မှုအတွက် ပြန်ခေါ်ချက်တစ်ခုနှင့် ကျရှုံးမှုအတွက် နောက်တစ်ခုယူသည်။
နှစ်ခုလုံးသည် ရွေးချယ်နိုင်သောကြောင့် အောင်မြင်မှု သို့မဟုတ် ကျရှုံးမှုအတွက်သာ ပြန်ခေါ်နိုင်ပါသည်။
ဥပမာ
function myDisplayer(some) {
document.getElementById("demo").innerHTML = some;
}
let myPromise = new Promise(function(myResolve, myReject) {
let x = 0;
// The producing code (this may take some time)
if (x == 0) {
myResolve("OK");
} else {
myReject("Error");
}
});
myPromise.then(
function(value) {myDisplayer(value);},
function(error) {myDisplayer(error);}
);
JavaScript Promise နမူနာများ
ကတိများအသုံးပြုမှုကို သရုပ်ပြရန်၊ ကျွန်ုပ်တို့သည် ယခင်အခန်းမှ ပြန်လည်ခေါ်ဆိုမှု နမူနာများကို အသုံးပြုပါမည်-
- အချိန်ကုန်ရန် စောင့်နေသည်။
- ဖိုင်တစ်ခုကို စောင့်နေသည်။
အချိန်ကုန်ရန် စောင့်နေသည်။
Callback အသုံးပြုခြင်း ဥပမာ
setTimeout(function() { myFunction("I love You !!!"); }, 3000);
function myFunction(value) {
document.getElementById("demo").innerHTML = value;
}
Promise ကိုအသုံးပြုခြင်း ဥပမာ
let myPromise = new Promise(function(myResolve, myReject) {
setTimeout(function() { myResolve("I love You !!"); }, 3000);
});
myPromise.then(function(value) {
document.getElementById("demo").innerHTML = value;
});
ဖိုင်တစ်ခုကို စောင့်နေသည်။
Callback သုံးပြီး ဥပမာ
function getFile(myCallback) {
let req = new XMLHttpRequest();
req.open('GET', "mycar.html");
req.onload = function() {
if (req.status == 200) {
myCallback(req.responseText);
} else {
myCallback("Error: " + req.status);
}
}
req.send();
}
getFile(myDisplayer);
Promise သုံးပြီး ဥပမာ
let myPromise = new Promise(function(myResolve, myReject) {
let req = new XMLHttpRequest();
req.open('GET', "mycar.htm");
req.onload = function() {
if (req.status == 200) {
myResolve(req.response);
} else {
myReject("File not Found");
}
};
req.send();
});
myPromise.then(
function(value) {myDisplayer(value);},
function(error) {myDisplayer(error);}
);
Browser ပံ့ပိုးမှု
ES6 ဟုလည်းသိကြသော ECMAScript 2015 သည် JavaScript Promise object ကိုမိတ်ဆက်ပေးခဲ့သည်။
အောက်ပါဇယားသည် Promise အရာဝတ္ထုများအတွက် အပြည့်အဝပံ့ပိုးမှုဖြင့် ပထမဆုံးဘရောက်ဆာဗားရှင်းကို သတ်မှတ်ဖော်ပြသည်-
Chrome 33 | Edge 12 | Firefox 29 | Safari 7.1 | Opera 20 |
Feb, 2014 | Jul, 2015 | Apr, 2014 | Sep, 2014 | Mar, 2014 |