জেভাস্ক্রিপ্ট Promise

"I Promise a Result!"

"Producing code(উৎপাদন কোড)" এমন কোড, যা কিছু সময় লাগতে পারে

"Consuming code(ব্যবহার কোড)" একটি ফলাফল অপেক্ষা করতে হবে এমন কোড

Promise একটি JavaScript অবজেক্ট, যা উৎপাদন কোড এবং ব্যবহার কোডকে সংযুক্ত করে

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

যখন Promise অবজেক্ট "pending" (কাজকর্ম) হয়, তখন ফলাফল undefined

যখন Promise অবজেক্ট "fulfilled" হয়, তখন ফলাফল একটি মূল্য

যখন Promise অবজেক্ট "rejected" হয়, তখন ফলাফল একটি ত্রুটি অবজেক্ট

myPromise.state myPromise.result
"pending" undefined
"fulfilled" ফলাফল মূল্য
"rejected" error অবজেক্ট

আপনি Promise-র state এবং result এসব অ্যাট্রিবিউট প্রত্যাহার করতে পারবেন না。

আপনি Promise পদ্ধতি ব্যবহার করে Promise-কে প্রক্রিয়াকরণ করতে হবে。

Promise কিভাবে ব্যবহার করা যায়

মানসে 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 ওবজেক্টকে সম্পূর্ণভাবে সমর্থন করা ব্রাউজারের সংস্করণকে উল্লেখ করেছে:

এক্সএসএমএসএক্স ২০১৫, আবার যেমন ES6, জেভাস্ক্রিপ্ট Promise ওবজেক্ট উপনীত করেছে。 আইই ফায়ারফক্স স্যাফারি ওপেরা
চ্রোম ৩৩ এডজ ১২ ফায়ারফক্স ২৯ স্যাফারি ৭.১ ওপেরা ২০
২০১৪ সালের ২ মাস ২০১৫ সালের ৭ মাস ২০১৪ সালের ৪ মাস ২০১৪ সালের ৯ মাস ২০১৪ সালের ৩ মাস