Generator Function কি?

Generators - জাভাস্ক্রিপ্ট ইএস৬ (ES6) - Web Development

299

Generator Function ES6 (ECMAScript 2015) এ নতুন একটি ফিচার, যা function* সিনট্যাক্স দিয়ে ডিফাইন করা হয়। এটি একটি বিশেষ ধরনের ফাংশন যা একাধিক মান (values) ধারাবাহিকভাবে প্রদান করতে পারে এবং যখন প্রয়োজন হয়, তখন তার কার্যকারিতা পুনরায় শুরু করা যায়। সাধারণ ফাংশনের বিপরীতে, Generator ফাংশন এক্সিকিউশন স্টপ করে এবং পরে আবার চলতে থাকে, যা এর আউটপুট ব্যবস্থাপনা অনেক সহজ করে।

একটি Generator ফাংশন প্রাথমিকভাবে একটি generator object রিটার্ন করে, যা yield কিওয়ার্ড ব্যবহার করে একাধিক মান বা ভ্যালু প্রদান করতে সক্ষম।


Generator Function Sintax

একটি Generator Function ডিফাইন করতে function* সিনট্যাক্স ব্যবহার করা হয়। এখানে yield কিওয়ার্ড ব্যবহার করে ফাংশনটি বিভিন্ন মান (values) ফেরত দেয়।

function* myGenerator() {
  yield 1;
  yield 2;
  yield 3;
}

এখানে, myGenerator একটি generator function, যা একে একে 1, 2, এবং 3 মান প্রদান করবে।


Generator Function এর ব্যবহার

Generator Function কে কল করা

Generator Function একটি generator object রিটার্ন করে, যেটি next() মেথডের মাধ্যমে মান বের করতে সক্ষম।

const gen = myGenerator();  // Generator object তৈরি করা

console.log(gen.next());  // { value: 1, done: false }
console.log(gen.next());  // { value: 2, done: false }
console.log(gen.next());  // { value: 3, done: false }
console.log(gen.next());  // { value: undefined, done: true }
  • next() মেথডটি generator থেকে পরবর্তী মান (value) ফেরত দেয়। এটি একটি অবজেক্ট রিটার্ন করে, যেটি দুটি প্রপার্টি ধারণ করে:
    • value: পরবর্তী মান যা ফাংশন থেকে প্রদান করা হয়েছে।
    • done: একটি বুলিয়ান মান যা জানায় যে, আরও কোনো মান প্রদান করা হবে কি না (যদি done: true হয়, তবে মান শেষ হয়ে গেছে)।

yield কিওয়ার্ড

yield কিওয়ার্ডটি Generator Function এর মধ্যে ব্যবহৃত হয় যা ফাংশনকে বিরতি দিয়ে একটি মান প্রদান করতে সক্ষম করে। প্রতিবার yield কল হলে, ফাংশনটি বিরতি নেয় এবং পরবর্তী বার next() কল করার মাধ্যমে তা পুনরায় শুরু হয়।

yield এর উদাহরণ

function* countUpTo(max) {
  let count = 1;
  while (count <= max) {
    yield count;
    count++;
  }
}

const counter = countUpTo(3);
console.log(counter.next().value);  // 1
console.log(counter.next().value);  // 2
console.log(counter.next().value);  // 3
console.log(counter.next().value);  // undefined (done: true)

এখানে, countUpTo(3) generator function 1 থেকে 3 পর্যন্ত মান প্রদান করবে। প্রতিবার next() কল করার পর ফাংশনটি আবার চালু হবে এবং পরবর্তী মান প্রদান করবে।


Generator Function এর সুবিধা

  1. Lazy Evaluation (অলস মূল্যায়ন): Generator ফাংশন শুধুমাত্র যখন next() কল করা হয় তখনই তার মান প্রদান করে, অর্থাৎ এটি শুধুমাত্র প্রয়োজনীয় সময়ে কাজ করে। এই কারণে এটি বড় বড় ডেটা সেট নিয়ে কাজ করার সময় মেমরি ব্যবস্থাপনায় সাহায্য করে।
  2. State Retention (স্টেট রিটেনশন): yield ব্যবহার করার মাধ্যমে ফাংশন তার অবস্থান (state) বজায় রেখে পরবর্তী কলের মাধ্যমে আবার কাজ চালিয়ে যেতে পারে। এটি stateful ফাংশন তৈরি করার ক্ষেত্রে খুবই উপকারী।
  3. Asynchronous Programming (অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং): Generator ফাংশনগুলির মাধ্যমে আপনি অ্যাসিঙ্ক্রোনাস কাজগুলো সহজভাবে করতে পারেন, যেমন ফাইল পড়া, ডেটাবেসের সঙ্গে যোগাযোগ, বা HTTP কল করা।

Generator Function এর ব্যবহার অ্যাসিঙ্ক্রোনাস কোডে

Generator Function অ্যাসিঙ্ক্রোনাস কোডের মধ্যে ব্যবহৃত হলে, আপনি yield কিওয়ার্ডের মাধ্যমে পরবর্তী asynchronous কাজের জন্য অপেক্ষা করতে পারেন।

function* fetchData() {
  const response = yield fetch('https://api.example.com/data');
  const data = yield response.json();
  console.log(data);
}

// Generator ফাংশন ব্যবহার করে অ্যাসিঙ্ক্রোনাস কোডের কার্যকরী উদাহরণ
const generator = fetchData();
const fetchPromise = generator.next().value;  // First yield fetch API

fetchPromise.then(response => {
  generator.next(response).value  // Second yield for json response
}).then(data => {
  generator.next(data);  // Final step after data is fetched
});

এখানে, Generator ফাংশন yield কিওয়ার্ডের মাধ্যমে ডেটা অ্যাসিঙ্ক্রোনাসভাবে নেয় এবং পরে তা প্রক্রিয়া করে।


সারাংশ

Generator ফাংশন এবং yield কিওয়ার্ড JavaScript কোডকে আরো কার্যকর এবং সুবিন্যস্ত করে তোলে, বিশেষ করে যখন আপনি বড় ডেটা সেট বা অ্যাসিঙ্ক্রোনাস কোডের সাথে কাজ করছেন। Generator ফাংশনগুলি lazy evaluation এবং state retention সুবিধা প্রদান করে, যা তাদের অত্যন্ত শক্তিশালী এবং ব্যবহারিক করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...