RxJS এর pipe() এবং subscribe() মেথডের ব্যবহার

Operators এর ধারণা এবং শ্রেণীবিভাগ - আরএক্সজেএস (RxJS) - Web Development

257

RxJS (Reactive Extensions for JavaScript) অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংয়ে ব্যবহৃত একটি শক্তিশালী লাইব্রেরি, যা Observables (ডেটা স্ট্রিম) এবং Operators ব্যবহার করে ডেটা প্রক্রিয়া করতে সাহায্য করে। RxJS এ pipe() এবং subscribe() দুটি গুরুত্বপূর্ণ মেথড, যা Observables এবং অপারেটরের মাধ্যমে ডেটা স্ট্রিম পরিচালনার জন্য ব্যবহৃত হয়।


pipe() মেথড

pipe() হল একটি অত্যন্ত গুরুত্বপূর্ণ ফাংশন, যা RxJS-এর Operators এর সাথে একাধিক অপারেশন চেইন করতে ব্যবহৃত হয়। এটি একটি ফাংশনাল প্রোগ্রামিং প্যাটার্নে কাজ করে এবং ডেটা স্ট্রিমের উপর একটি বা একাধিক অপারেশন পরিচালনা করে।

pipe() এর বৈশিষ্ট্য:

  • চেইনেবল অপারেটর: pipe() মেথড ব্যবহার করে একাধিক অপারেটরকে চেইন করা যায়, যেমন map, filter, merge, debounceTime ইত্যাদি।
  • ডেটা ট্রান্সফরমেশন: আপনি অপারেটরগুলির মাধ্যমে ডেটা স্ট্রিমকে পরিবর্তন বা ট্রান্সফর্ম করতে পারেন।
  • সময়সীমা নিয়ন্ত্রণ: কিছু অপারেটর যেমন debounceTime ব্যবহার করে আপনি স্ট্রিমের গতির উপর নিয়ন্ত্রণ রাখতে পারেন।

উদাহরণ:

import { of } from 'rxjs';
import { map, filter } from 'rxjs/operators';

const observable = of(1, 2, 3, 4, 5);

observable.pipe(
  filter(x => x % 2 === 0), // ফিল্টার করে শুধু even সংখ্যা
  map(x => x * 10) // প্রতিটি মানকে ১০ গুণ করবে
).subscribe(result => console.log(result));

এখানে, pipe() মেথডটি filter এবং map অপারেটরগুলিকে চেইন করে, যাতে even সংখ্যাগুলোকে ১০ গুণ করা হয়। আউটপুট হবে:

20
40

subscribe() মেথড

subscribe() মেথড হলো RxJS-এর অবজার্ভেবল থেকে ডেটা গ্রহণ করার জন্য ব্যবহৃত একটি মেথড। এটি অবজার্ভেবল স্ট্রিমের সাথে যুক্ত হয়ে ডেটা গ্রহণ শুরু করে এবং নির্দিষ্ট প্রক্রিয়া (callback) কল করে যখন কোনো নতুন মান আসে।

subscribe() এর বৈশিষ্ট্য:

  • ডেটা প্রাপ্তি: subscribe() মেথডের মাধ্যমে, আপনি অবজার্ভেবল স্ট্রিম থেকে ডেটা গ্রহণ করতে পারেন।
  • কনফিগারেশন: subscribe() এর মধ্যে আপনি next, error, এবং complete হ্যান্ডলারগুলিকে ডিফাইন করতে পারেন, যা ডেটার স্ট্রিমের বিভিন্ন স্টেজে প্রতিক্রিয়া জানায়।
    • next(): নতুন ডেটা স্ট্রিমের মান গ্রহণ করে।
    • error(): কোনো ত্রুটি (error) হলে তা হ্যান্ডেল করে।
    • complete(): স্ট্রিম শেষ হলে এটি কল হয়।

উদাহরণ:

import { of } from 'rxjs';

const observable = of(1, 2, 3, 4, 5);

observable.subscribe({
  next(x) { console.log('Next:', x); }, // নতুন ডেটা মান দেখাবে
  complete() { console.log('Completed!'); } // যখন স্ট্রিম শেষ হবে
});

এখানে, subscribe() মেথডটি ডেটার প্রতি প্রতিক্রিয়া জানাতে ব্যবহৃত হয়েছে এবং next() কলব্যাক ফাংশনটি প্রতিটি মান প্রিন্ট করবে। আউটপুট হবে:

Next: 1
Next: 2
Next: 3
Next: 4
Next: 5
Completed!

pipe() এবং subscribe() এর সমন্বয়

RxJS-এ pipe() এবং subscribe() দুটি মেথড সাধারণত একসাথে ব্যবহৃত হয়। প্রথমত, pipe() মেথডটি ডেটা স্ট্রিমের উপর একাধিক অপারেটর প্রয়োগ করে এবং তারপর subscribe() মেথডটির মাধ্যমে সেই পরিবর্তিত ডেটা স্ট্রিমের ফলাফল গ্রহণ করা হয়।

উদাহরণ:

import { interval } from 'rxjs';
import { take, map } from 'rxjs/operators';

const observable = interval(1000).pipe(
  take(5), // ৫টি মান নেবে
  map(x => x * 2) // প্রতিটি মানকে ২ গুণ করবে
);

observable.subscribe({
  next(x) { console.log(x); }, // প্রতি এক সেকেন্ডে ২ গুণ মান প্রিন্ট হবে
  complete() { console.log('Completed!'); }
});

এখানে, interval(1000) প্রতি সেকেন্ডে একটি মান প্রদান করে। pipe() ব্যবহার করে আমরা প্রথমে take(5) দিয়ে শুধুমাত্র ৫টি মান নিলাম, এরপর map() অপারেটর দিয়ে প্রতিটি মানকে ২ গুণ করেছি। subscribe() মেথডটি ডেটা স্ট্রিমের ফলাফল গ্রহণ করে এবং প্রতি সেকেন্ডে ২ গুণ মান প্রদর্শন করে।

আউটপুট হবে:

0
2
4
6
8
Completed!

সারাংশ

  • pipe() মেথড: এটি RxJS এর অপারেটরগুলিকে চেইন করতে ব্যবহৃত হয়। আপনি একাধিক অপারেটর ব্যবহার করে ডেটা স্ট্রিমের উপর কার্যকরী ট্রান্সফরমেশন এবং ফিল্টারিং করতে পারেন।
  • subscribe() মেথড: এটি অবজার্ভেবল থেকে ডেটা গ্রহণ করতে ব্যবহৃত হয়। এটি next(), error(), এবং complete() কনফিগারেশন গ্রহণ করে, যা ডেটার স্ট্রিমের প্রতিটি ধাপের প্রতিক্রিয়া জানাতে সাহায্য করে।

এই দুটি মেথডের সমন্বয়ে RxJS ডেটা স্ট্রিম এবং অ্যাসিঙ্ক্রোনাস কার্যক্রম পরিচালনার জন্য একটি শক্তিশালী টুল সরবরাহ করে।

Content added By
Promotion

Are you sure to start over?

Loading...