ဂျေဟိုက် 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 ခုနှစ် မတ် လ