ဂျေဟိုက် Promise
- ပြီးပိုင်း ဂျက်တိုင် အဆင့်
- နောက်ပိုင်း ဂျက်တိုင် အဆင့်
"I Promise a Result!"
"Producing code(အချိန် ပိုသည် အမှု)" သည် အချိန် ပိုသည် အမှု
"Consuming code(သုံးပြီး အမှု)" သည် လိုအပ်သည် ရလဒ် ကို လိုက်နာရသည်
Promise အားစား သည် အချက်အလက် ကို ပေါင်းစပ်သည်
JavaScript Promise အားစား
JavaScript Promise အားစား အလိုက် နောက်ဆုံး အမှု နှင့် သုံးပြီး အမှု ကို ခေါ်ခဲ့
Promise အပိုင်းအချက်
let myPromise = new Promise(function(myResolve, myReject) { // "Producing Code"(လိုအပ်သည် အချိန် ပိုသည်) myResolve(); // အောင်မြင် အခါ myReject(); // အဆိုးဆုံး အခါ }); // "Consuming Code" (လိုအပ်သည် သုံးပြီး ပြီးပြီးပြီးပြီး သင့်ဝတ် ကို အောင်မြင်သင့်သည်) myPromise.then( function(value) { /* အောင်မြင် အခါ အမှု */ }, function(error) { /* အဆိုးဆုံး အခါ အမှု */ } );
အုပ်စုပေါင်း မှ ရလဒ် ကို ရရှိရာတွင် နောက်ဆုံး ခေါ်ခဲ့ရသည် တစ်ခု ကို ခေါ်ခဲ့သင့်
ရလဒ် | ခေါ်ခဲ့ |
---|---|
အောင်မြင် | myResolve(result value) |
အဆိုးဆုံး | myReject(error object) |
Promise အားစား အချက်အလက်
JavaScript Promise အားစား အလိုက်
- Pending
- Fulfilled
- Rejected
Promise အားစား အလိုက် အချက်အလက် နှစ်ခု ကူညီသည်state နှင့် result.
သင့်ဝတ် အားစား ဖြစ်ပါက undefined ဖြစ်
သင့်ဝတ် အားစား ဖြစ်ပါက တန်ဖိုး ဖြစ်
သင့်ဝတ် အားစား ဖြစ်ပါက ရလဒ် အားစား ဖြစ်
myPromise.state | myPromise.result |
---|---|
"pending" | undefined |
"fulfilled" | ရလဒ် တန်ဖိုး |
"rejected" | error အားစား |
သင့်ဝတ် အခြေအနေ နှင့် ရလဒ် အချက်အလက် မမူကြုံနိုင်
သင့်ဝတ်အမှု့ကို သုံးသပ်သင့်သည်
သင့်ဝတ်သုံးနိုင်သည်
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; // လုပ်ငန်း ထုတ်လုပ်ရာ အချိန် ဖြစ်ပေါ် ပါသည် (ဤ အချိန် ဖြစ်ပေါ် ဖြစ်ပေါ် ကြိုးစား ပါ) if (x == 0) { myResolve("OK"); } else { myReject("Error"); } }); myPromise.then( function(value) {myDisplayer(value);}, function(error) {myDisplayer(error);} );
JavaScript Promise အချက်ပြု
Promise အာသာအရိုင်း အကြောင်း အတွက် မူကြမ်းတင် အမှတ် အချက်ပြု အားကစား ကို အသုံးပြုပါ:
- ကြာခြင်း မျှော်လင့်
- ဖိုင် မျှော်လင့်
ကြာခြင်း မျှော်လင့်
အပေးပေါက်လုပ်ငန်း အကြောင်း
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; });
ဖိုင် မျှော်လင့်
အပေးပေါက်လုပ်ငန်း အကြောင်း
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);} );
浏览器支持
ECMAScript 2015,也称为 ES6,引入了 JavaScript Promise 对象。
下表注明了首个完全支持 Promise 对象的浏览器版本:
အေစီမာစ် 2015 သို့ အမည်ပြုထားသော အေအက်စ်6 ကာ ဂျက်တိုင် Promise အိုဂျက်စ် ကို ပြန်လည်ဖတ်ချက် ပြုသည်။ | အိုဘီ | ဖရူးဖော့ | ဆာဖရီ | အိုပရာ |
---|---|---|---|---|
ဖရူးဖော့ 33 | အိန်ဂျယ် 12 | ဖရူးဖော့ 29 | ဆာဖရီ 7.1 | အိုပရာ 20 |
2014 ခုနှစ် ဇန်နဝါရီ | 2015 ခုနှစ် ဇွန် | 2014 ခုနှစ် မတ် လ | 2014 ခုနှစ် စက်တင်ဘာ | 2014 ခုနှစ် မတ် လ |
- ပြီးပိုင်း ဂျက်တိုင် အဆင့်
- နောက်ပိုင်း ဂျက်တိုင် အဆင့်