Observable হল একটি মৌলিক কনসেপ্ট RxJS-এ, যা ডেটার স্ট্রিম বা সিকোয়েন্সের প্রতিনিধিত্ব করে। একটি Observable হলো একটি উৎস (source) যা একটি নির্দিষ্ট সময়ের মধ্যে এক বা একাধিক মান (values) উৎপন্ন করে এবং সাবস্ক্রাইবার (subscriber)-দের কাছে তা প্রেরণ করে। এটি অ্যাসিঙ্ক্রোনাস কার্যক্রম বা ইভেন্ট হ্যান্ডলিং-এর জন্য ব্যবহৃত হয়, যেমন HTTP রিকোয়েস্ট, টাইমার, অথবা ইউজারের ইনপুট ইভেন্ট।
Observables বিভিন্ন ধরনের ডেটা বা ইভেন্ট স্ট্রিমের সাথে কাজ করতে পারে এবং এগুলির সাথে সম্পর্কিত প্রতিটি পর্যায়কে ম্যানেজ করার জন্য একটি স্ট্রিম তৈরি করে। এটা কেবলমাত্র একটি ধারাবাহিক ডেটা রিডিং নয়, বরং এগুলি প্রতিক্রিয়া (reactive) হতে পারে, যার মাধ্যমে ডেটার পরিবর্তন বা নতুন মান আসলে এটি অবজার্ভারদের কাছে প্রেরণ করা হয়।
একটি সাধারণ Observable এর উদাহরণ:
import { Observable } from 'rxjs';
const observable = new Observable(subscriber => {
subscriber.next(1);
subscriber.next(2);
subscriber.next(3);
subscriber.complete();
});
observable.subscribe({
next(value) { console.log(value); },
complete() { console.log('Completed'); }
});
এখানে, observable একটি ডেটা স্ট্রিম তৈরি করছে যা ১, ২, ৩ মানগুলিকে প্রেরণ করে এবং শেষে complete() কল করছে। subscribe() ফাংশনটি ডেটা প্রাপ্তির প্রক্রিয়াকে কার্যকর করছে।
Observer এর ধারণা
Observer হল এমন একটি অবজার্ভার প্যাটার্ন, যা মূলত Observable দ্বারা প্রেরিত ডেটা স্ট্রিমের প্রতি রিয়্যাক্টিভ প্রতিক্রিয়া জানায়। এটি একটি অবজার্ভারের মত কাজ করে, যা তার নিজস্ব প্রতিক্রিয়া ফাংশনের মাধ্যমে Observable থেকে আসা ডেটা গ্রহণ এবং প্রসেস করে। Observer এর মূল কাজ হলো Observable থেকে আসা প্রতিটি মান (value) গ্রহণ করা এবং তার উপর নির্দিষ্ট কাজ বা অপারেশন সম্পাদন করা।
Observer একটি অবজার্ভেবল থেকে আসা ডেটা গ্রহণের জন্য next(), error() এবং complete() ফাংশনগুলিকে ইমপ্লিমেন্ট করে। এগুলির মাধ্যমে Observer ডেটার প্রবাহের প্রতিটি ধাপের সাথে যুক্ত থাকে।
একটি সাধারণ Observer এর উদাহরণ:
const observer = {
next(value) { console.log('Received value:', value); },
error(err) { console.log('Error:', err); },
complete() { console.log('Stream complete!'); }
};
observable.subscribe(observer);
এখানে, Observer next(), error() এবং complete() ফাংশনগুলির মাধ্যমে Observable এর ডেটা স্ট্রিম থেকে প্রাপ্ত মানগুলো গ্রহণ করছে এবং প্রতিটি মানের জন্য উপযুক্ত প্রতিক্রিয়া জানাচ্ছে।
Observable এবং Observer এর সম্পর্ক
Observable এবং Observer এর মধ্যে একটি সম্পর্ক রয়েছে যেখানে:
- Observable হলো ডেটা বা ইভেন্টের উৎস, যা স্ট্রিম তৈরি করে এবং সেই স্ট্রিমে মান প্রেরণ করে।
- Observer হলো সেই উৎস থেকে ডেটা বা ইভেন্ট গ্রহণকারী, যা প্রতিটি মানের জন্য একটি নির্দিষ্ট প্রতিক্রিয়া জানায়।
এটি একটি অবজার্ভার প্যাটার্নের মতো কাজ করে, যেখানে Observer একটি অবজার্ভেবল (Observable) থেকে আসা ডেটার উপর কাজ করে এবং তার মধ্যে কোনো পরিবর্তন ঘটলে তা স্বয়ংক্রিয়ভাবে অবজার্ভারের কাছে পৌঁছে যায়। এভাবে, একাধিক Observer একাধিক Observable এর সাথে সংযুক্ত হতে পারে এবং প্রতিটি Observer তাদের নিজস্বভাবে সেগুলির প্রতিক্রিয়া জানায়।
সারাংশ
RxJS-এ Observable এবং Observer দুটি অত্যন্ত গুরুত্বপূর্ণ ধারণা। Observable একটি ডেটা স্ট্রিম বা ইভেন্ট সিকোয়েন্স তৈরি করে এবং Observer সেই স্ট্রিম থেকে আসা মানগুলো গ্রহণ করে এবং তার উপর কাজ করে। এই দুটি উপাদান একত্রিত হয়ে একটি রিয়্যাক্টিভ প্রোগ্রামিং প্যাটার্ন তৈরি করে, যা অ্যাসিঙ্ক্রোনাস ডেটা এবং ইভেন্টগুলোকে সহজে হ্যান্ডল করার জন্য ব্যবহৃত হয়।
Read more