প্রমিস

প্রমিস

মধ্যম

ভূমিকা

Promise ক্লাসটি আসার আগে অ্যাসিনক্রোনাস কোড নিয়ে কাজ করার একটাই উপায় ছিল: কলব্যাক প্যাটার্ন।

কলব্যাক হলো এমন একটি ফাংশন, যেটি অন্য একটি ফাংশনে আর্গুমেন্ট হিসেবে পাঠানো হয় এবং ওই অন্য ফাংশনের কোনো একটি কাজ শেষ হয়ে গেলে সেটিকে কল করা হয়। এসব কলব্যাক ফাংশনের একটি কমন রীতি হলো, তারা প্রথম প্যারামিটার হিসেবে একটি "error" নেয় (নিচের উদাহরণটি দেখুন)।

function callback(error, arg2, arg3) {}

এর সঙ্গে অ্যাসিনক্রোনাস কোডের সম্পর্কটা কী?

ঐতিহাসিকভাবে কলব্যাক ব্যবহার করা হতো যেন কোনো অ্যাসিনক্রোনাস কাজ শেষ হওয়ার পর পুরো প্রোগ্রাম ব্লক না করে আমরা কিছু কাজ করতে পারি।

fetchProduct(productId, function (error, data) {
  if (error) {
    // Handle the error
  } else {
    // Do some work
  }
});

উপরের উদাহরণে fetchProduct ফাংশনটি (যেটি অ্যাসিনক্রোনাস) দ্বিতীয় আর্গুমেন্ট হিসেবে একটি কলব্যাক নেয়, আর সেই কলব্যাকই ঠিক করে দেয় প্রোডাক্টের ডেটা এসে গেলে কী করতে হবে।

নির্দেশনা

এই অনুশীলনীর দুটি লক্ষ্য আছে:

  1. একটি promisify ফাংশন ইমপ্লিমেন্ট করুন যা "কলব্যাক প্যাটার্ন" ব্যবহার করা একটি ফাংশনকে এমন একটি ফাংশনে রূপান্তর করে যা একটি Promise রিটার্ন করে। নিচের উদাহরণটি দেখুন।
function fetchProduct(productId, function(error, data) {
    if (error) {
        // Handle the error
    } else {
        // Make something with your data
    }
})

const fetchProductAsPromise = promisify(fetchProduct);

// Now you got a function `fetchProductAsPromise`
// that returns a promise
fetchProductAsPromise(productId)
    .then((data) => {})
    .catch((error) => {});
  1. নিচের বিল্ট-ইন Promise মেথডগুলো পুনরায় ইমপ্লিমেন্ট করুন (সেগুলো ব্যবহার না করেই)
  • all: প্রমিসের একটি অ্যারে নেয় এবং সেগুলোর সবগুলো রিজলভ হলে রিজলভ করে, অথবা সেগুলোর একটি রিজেক্ট হলে রিজেক্ট করে।
  • allSettled: প্রমিসের একটি অ্যারে নেয় এবং সেগুলোর সবগুলো রিজলভ বা রিজেক্ট হলে রিজলভ করে।
  • race: প্রমিসের একটি অ্যারে নেয় এবং প্রথম প্রমিসটি যে মান দিয়ে রিজলভ বা রিজেক্ট করে, সেই মান দিয়ে রিজলভ বা রিজেক্ট করে।
  • any: প্রমিসের একটি অ্যারে নেয় এবং সেগুলোর একটি রিজলভ হলে রিজলভ করে, অথবা সবগুলো রিজেক্ট হলে রিজেক্ট করে।
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
JavaScript Exercism

প্রমিস শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, JavaScript ট্র্যাকের 37টি কনসেপ্ট159টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।