RxJS-এ Operators দুটি প্রধান শ্রেণীতে বিভক্ত: Pipeable Operators এবং Creation Operators। এগুলোর মাধ্যমে আপনি Observable-দের উপর বিভিন্ন ধরনের কার্যক্রম বা ট্রান্সফর্মেশন করতে পারেন।
Pipeable Operators
Pipeable Operators এমন অপারেটর যেগুলো আপনি pipe() মেথডের মধ্যে ব্যবহার করতে পারেন। pipe() মেথড ব্যবহার করে একাধিক অপারেটর চেইন করা যায়, যাতে Observable-এর স্ট্রিমের উপর বিভিন্ন অপারেশন করা যায়। এগুলো সাধারণত একটি Observable-এর ডেটা বা ইভেন্টকে ট্রান্সফর্ম করে।
Pipeable Operators এর উদাহরণ:
map:
mapঅপারেটরটি একটি মানের উপর ট্রান্সফর্মেশন প্রয়োগ করে এবং সেই ট্রান্সফর্মড মানটি নতুন Observable-এ পাঠায়।উদাহরণ:
import { of } from 'rxjs'; import { map } from 'rxjs/operators'; const observable = of(1, 2, 3); observable.pipe( map(x => x * 10) ).subscribe(console.log); // আউটপুট: 10, 20, 30filter:
filterঅপারেটরটি একটি Observable-এর মানগুলিকে ফিল্টার করে। এটি শুধুমাত্র সেই মানগুলো পাঠায় যা নির্দিষ্ট শর্ত পূরণ করে।উদাহরণ:
import { of } from 'rxjs'; import { filter } from 'rxjs/operators'; const observable = of(1, 2, 3, 4, 5); observable.pipe( filter(x => x % 2 === 0) ).subscribe(console.log); // আউটপুট: 2, 4take:
takeঅপারেটরটি একটি নির্দিষ্ট সংখ্যা পর্যন্ত মানগুলো গ্রহণ করে এবং তারপর Observable বন্ধ করে দেয়।উদাহরণ:
import { of } from 'rxjs'; import { take } from 'rxjs/operators'; const observable = of(1, 2, 3, 4, 5); observable.pipe( take(3) ).subscribe(console.log); // আউটপুট: 1, 2, 3concatMap:
concatMapঅপারেটরটি একটি Observable থেকে পাওয়া প্রতিটি মানকে অন্য একটি Observable-এ ম্যাপ করে এবং তাদের সিরিয়ালি (একটি একে পরবর্তী) সম্পাদন করে।উদাহরণ:
import { of } from 'rxjs'; import { concatMap } from 'rxjs/operators'; const observable = of(1, 2, 3); observable.pipe( concatMap(x => of(x * 10)) ).subscribe(console.log); // আউটপুট: 10, 20, 30
Creation Operators
Creation Operators এমন অপারেটর যা দিয়ে আপনি নতুন Observable তৈরি করতে পারেন। এগুলি আপনাকে Observable সৃষ্টি করার জন্য বিভিন্ন পদ্ধতি প্রদান করে, যাতে অ্যাসিঙ্ক্রোনাস ডেটা অথবা স্ট্রিমগুলির সাথে কাজ করা সহজ হয়।
Creation Operators এর উদাহরণ:
of:
ofঅপারেটরটি একটি Observable তৈরি করে যেটি নির্দিষ্ট মানগুলি একের পর এক প্রেরণ করে।উদাহরণ:
import { of } from 'rxjs'; const observable = of(1, 2, 3); observable.subscribe(console.log); // আউটপুট: 1, 2, 3from:
fromঅপারেটরটি একটি অ্যারে, ইটারেবল, পমিস বা অন্য কোনো ডেটা স্ট্রিম থেকে একটি Observable তৈরি করে।উদাহরণ:
import { from } from 'rxjs'; const observable = from([1, 2, 3]); observable.subscribe(console.log); // আউটপুট: 1, 2, 3interval:
intervalঅপারেটরটি নির্দিষ্ট সময় ব্যবধানে সংখ্যা তৈরি করতে পারে। এটি একটি অ্যাসিঙ্ক্রোনাস Observable তৈরি করে যা নির্দিষ্ট সময় পরে একে একে সংখ্যা পাঠায়।উদাহরণ:
import { interval } from 'rxjs'; const observable = interval(1000); // প্রতি ১ সেকেন্ড পর পর observable.subscribe(console.log); // আউটপুট: 0, 1, 2, 3, ...timer:
timerঅপারেটরটি একটি নির্দিষ্ট বিলম্ব পরে একটি সংখ্যা পাঠায় এবং এরপর একটি পুনরাবৃত্তি শুরু করে।উদাহরণ:
import { timer } from 'rxjs'; const observable = timer(2000, 1000); // ২ সেকেন্ড পর শুরু হবে এবং প্রতি ১ সেকেন্ডে একটি সংখ্যা পাঠাবে observable.subscribe(console.log); // আউটপুট: 0, 1, 2, 3, ...
সারাংশ
RxJS-এর Pipeable Operators এবং Creation Operators দুটি মৌলিক উপাদান যা আপনাকে ডেটা স্ট্রিমের উপর বিভিন্ন কার্যক্রম করতে সাহায্য করে। Pipeable Operators ব্যবহার করে আপনি একাধিক অপারেশন চেইন করতে পারেন এবং Creation Operators ব্যবহার করে আপনি নতুন Observable তৈরি করতে পারেন। এগুলি RxJS ব্যবহার করে অ্যাসিঙ্ক্রোনাস ডেটা এবং ইভেন্ট স্ট্রিমগুলির সাথে কার্যকরভাবে কাজ করার জন্য অপরিহার্য টুল।
Read more