RxJS (Reactive Extensions for JavaScript) একটি শক্তিশালী লাইব্রেরি, যা অ্যাসিঙ্ক্রোনাস এবং ইভেন্ট-ভিত্তিক ডেটা স্ট্রিমগুলির জন্য ব্যবহৃত হয়। এর মধ্যে map() এবং mapTo() দুটি জনপ্রিয় অপারেটর রয়েছে, যেগুলি স্ট্রিমের ডেটার উপর বিভিন্ন ধরনের ট্রান্সফর্মেশন করতে সাহায্য করে। এগুলি দুটি খুবই গুরুত্বপূর্ণ অপারেটর, যা ডেটা স্ট্রিমের মান পরিবর্তন বা ম্যানিপুলেট করতে ব্যবহৃত হয়। নিচে map() এবং mapTo() এর ব্যবহার এবং পার্থক্য ব্যাখ্যা করা হলো।
1. map() অপারেটর
map() অপারেটরটি Functional Programming প্যাটার্ন অনুসরণ করে, যেখানে আপনি প্রতিটি মানের উপর একটি নির্দিষ্ট ফাংশন প্রয়োগ করতে পারেন। এটি মূলত একটি মানকে অন্য মানে রূপান্তর করার জন্য ব্যবহৃত হয়।
ব্যবহার:map() অপারেটরটি একটি ফাংশন নেয় যা একটি মানকে ট্রান্সফর্ম বা রূপান্তর করে এবং সেই মানকে সাবস্ক্রাইবারদের কাছে পাঠায়। এটি মূল Observable স্ট্রিমের মধ্যে প্রতিটি মানকে ম্যানিপুলেট করার জন্য ব্যবহৃত হয়।
উদাহরণ:
import { of } from 'rxjs';
import { map } from 'rxjs/operators';
const numbers$ = of(1, 2, 3, 4, 5);
numbers$.pipe(
map(x => x * 10) // Each number is multiplied by 10
).subscribe(result => console.log(result));
আউটপুট:
10
20
30
40
50
এখানে, map() অপারেটরটি numbers$ Observable থেকে প্রাপ্ত প্রতিটি মানকে ১০ গুণ করে পরিবর্তন করেছে।
2. mapTo() অপারেটর
mapTo() অপারেটরটি একটি নির্দিষ্ট মানকে সরাসরি map করে সব সময়। এটি fixed value মেপিং করার জন্য ব্যবহার করা হয়, যেখানে আপনি একাধিক স্ট্রিমের মাধ্যমে প্রাপ্ত ডেটার মানের পরিবর্তে একটি স্থির (static) মান পাঠাতে চান। এটি একটি নির্দিষ্ট মানের জন্য কার্যকরী, যার মানে এটি কোন ইনপুট মানের উপর ভিত্তি না করে একই আউটপুট প্রদান করে।
ব্যবহার:mapTo() অপারেটরটি একটি নির্দিষ্ট ফিক্সড ভ্যালু নেয় এবং সেটি প্রত্যেকটি স্ট্রিমের জন্য পাঠায়।
উদাহরণ:
import { of } from 'rxjs';
import { mapTo } from 'rxjs/operators';
const source$ = of('A', 'B', 'C', 'D');
source$.pipe(
mapTo('Z') // Always maps to 'Z'
).subscribe(result => console.log(result));
আউটপুট:
Z
Z
Z
Z
এখানে, mapTo() অপারেটরটি প্রতি ইভেন্টের জন্য Z মানটি প্রেরণ করেছে, যদিও ইনপুট মানগুলি 'A', 'B', 'C', 'D' ছিল।
map() এবং mapTo() এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | map() | mapTo() |
|---|---|---|
| ফাংশনালিটি | প্রত্যেকটি মানের উপর ট্রান্সফর্মেশন বা রূপান্তর প্রয়োগ করে। | একটি নির্দিষ্ট বা ফিক্সড মান সরাসরি মাপ করে। |
| ইনপুট এবং আউটপুট | ইনপুট মানের উপর ভিত্তি করে আউটপুট তৈরি করে। | সব ইনপুট মানের জন্য একই আউটপুট প্রদান করে। |
| ব্যবহার | ইনপুট ডেটার প্রক্রিয়াকরণের জন্য ব্যবহার করা হয়। | নির্দিষ্ট মান বা সিগন্যাল পাঠানোর জন্য ব্যবহৃত হয়। |
সারাংশ
map()অপারেটরটি প্রতিটি মানের উপর একটি নির্দিষ্ট ফাংশন প্রয়োগ করে ডেটার মান পরিবর্তন করতে ব্যবহৃত হয়।mapTo()অপারেটরটি সব সময় একটি নির্দিষ্ট, পূর্বনির্ধারিত মান পাঠাতে ব্যবহৃত হয়, যেটি ইনপুট ডেটার উপর নির্ভর করে না।
এই দুটি অপারেটর RxJS স্ট্রিমের ডেটার উপর বিভিন্ন ধরনের ট্রান্সফর্মেশন করার জন্য খুবই কার্যকরী।
Read more