forkJoin() এবং zip() এর মাধ্যমে Multiple Observables একত্র করা

Combination Operators - আরএক্সজেএস (RxJS) - Web Development

259

RxJS-এ forkJoin() এবং zip() হল দুইটি অপারেটর যা একাধিক Observable এর মানগুলোকে একত্রিত করতে ব্যবহৃত হয়। তারা আপনাকে একাধিক স্ট্রিম (Observables) থেকে মান সংগ্রহ করতে এবং সেগুলোকে একত্রিত করে একটি নির্দিষ্ট আউটপুট প্রদান করতে সহায়তা করে। তবে, তাদের আচরণে কিছু পার্থক্য রয়েছে এবং এটি নির্ভর করে আপনি কোন পরিস্থিতিতে কোন অপারেটরটি ব্যবহার করবেন।


1. forkJoin()

forkJoin() অপারেটরটি একাধিক Observable এর মানগুলিকে একত্রিত করে, তবে এটি শুধুমাত্র তখনই কাজ করবে যখন সমস্ত Observables complete হয়ে যাবে। এটি সকল Observable এর শেষ মান গ্রহণ করবে এবং সেই মানগুলিকে একটি অ্যারেতে বা অবজেক্টে একত্রিত করে একটি একক আউটপুট প্রদান করবে। যদি কোন Observable ভুল (error) হয়, তবে forkJoin() সেই Observable এর মান গ্রহণ করবে না এবং পুরো স্ট্রিমটি error হবে।

বৈশিষ্ট্য:

  • Complete হওয়া আবশ্যক: সমস্ত Observable এর complete হওয়ার পরই forkJoin() সেই সমস্ত Observable এর শেষ মানগুলো একত্রিত করবে।
  • একক মান: প্রতিটি Observable এর শেষ মান সংগ্রহ করা হয় এবং তা একসাথে পাঠানো হয়।

উদাহরণ:

import { forkJoin, of, timer } from 'rxjs';
import { delay } from 'rxjs/operators';

// তিনটি Observable তৈরি
const observable1 = of('First Value').pipe(delay(1000));
const observable2 = of('Second Value').pipe(delay(2000));
const observable3 = of('Third Value').pipe(delay(3000));

// forkJoin ব্যবহার করে একত্র করা
forkJoin([observable1, observable2, observable3]).subscribe({
  next: (values) => console.log('All values:', values),
  complete: () => console.log('All observables completed!')
});

আউটপুট:

All values: [ 'First Value', 'Second Value', 'Third Value' ]
All observables completed!

এখানে, forkJoin() সমস্ত Observable এর শেষ মানগুলিকে একত্রিত করেছে এবং একটি অ্যারে হিসেবে সাবস্ক্রাইবারকে পাঠিয়েছে। সমস্ত Observable এর complete হওয়া পর্যন্ত এটি অপেক্ষা করেছে।


2. zip()

zip() অপারেটরটি একাধিক Observable এর মানগুলোকে সমান্তরালভাবে একত্রিত করে। এটি সমস্ত Observable এর মান একত্র করে একটি নতুন অবজেক্ট বা অ্যারে তৈরি করে, তবে এটি প্রত্যেক Observable থেকে একটি করে মান একত্রিত করে পাঠায়। এটি সমস্ত Observable থেকে একটি করে মান গ্রহণ করবে এবং তারপর সেই মানগুলোকে একটি নতুন অ্যারে বা অবজেক্টে একত্রিত করবে।

বৈশিষ্ট্য:

  • একযোগে মান গ্রহণ: একাধিক Observable থেকে একটি করে মান সংগ্রহ করা হয়।
  • একই সংখ্যক মান: zip() তখনই একটি আউটপুট প্রদান করবে যখন সমস্ত Observable থেকে একটি করে মান পাওয়া যাবে। যদি কোনো Observable মান না পাঠায়, তবে zip() কোনো আউটপুট প্রদান করবে না।

উদাহরণ:

import { zip, of, timer } from 'rxjs';
import { delay } from 'rxjs/operators';

// তিনটি Observable তৈরি
const observable1 = of('First Value').pipe(delay(1000));
const observable2 = of('Second Value').pipe(delay(2000));
const observable3 = of('Third Value').pipe(delay(3000));

// zip ব্যবহার করে একত্র করা
zip(observable1, observable2, observable3).subscribe({
  next: (values) => console.log('Zipped values:', values),
  complete: () => console.log('All observables zipped!')
});

আউটপুট:

Zipped values: [ 'First Value', 'Second Value', 'Third Value' ]
All observables zipped!

এখানে, zip() প্রত্যেক Observable থেকে একসাথে একটি মান গ্রহণ করেছে এবং একটি অ্যারে তৈরি করেছে। সব Observable থেকে একটি মান প্রাপ্ত হওয়া পর্যন্ত এটি অপেক্ষা করেছে।


forkJoin() এবং zip() এর মধ্যে পার্থক্য

বৈশিষ্ট্যforkJoin()zip()
এটি কবে আউটপুট দেয়?সমস্ত Observable এর complete হওয়ার পরপ্রতিটি Observable থেকে একটি করে মান পাওয়া গেলেই
মান গ্রহণের পদ্ধতিসমস্ত Observable এর শেষ মানসমস্ত Observable থেকে সমান্তরাল মান একত্রিত করা হয়
অপেক্ষা করেসমস্ত Observable এর সম্পূর্ণ হওয়ার জন্যযখন প্রত্যেক Observable একটি করে মান দেয়
ভুল (error) হলে কী হয়?যদি কোনো Observable error হয়, তবে সেটা গ্রহণ করা হয় নাসব Observable যদি একই সময়ে মান দেয়, তবেই আউটপুট তৈরি হয়
ফলাফলএকটি অ্যারে বা অবজেক্ট যা সমস্ত শেষ মান ধারণ করেএকসাথে একাধিক মানের একটি অ্যারে

সারাংশ

  • forkJoin() সব Observable এর শেষ মান একত্রিত করে এবং তখনই আউটপুট দেয় যখন সমস্ত Observable সম্পূর্ণ (complete) হয়ে যায়। এটি এক ধরনের নিশ্চিতভাবে একত্রিত করা প্রক্রিয়া, যেখানে সমস্ত স্ট্রিমের শেষ মান কেবলমাত্র ফেরত দেয়া হয়।
  • zip() একযোগভাবে মান সংগ্রহ করে এবং প্রত্যেক Observable থেকে একটি করে মান নেয়। এটি সমান্তরালভাবে একাধিক Observable এর মান একত্র করে, এবং যখন সমস্ত Observable থেকে একটি করে মান পাওয়া যায়, তখন এটি আউটপুট প্রদান করে।

এই দুটি অপারেটরের মাধ্যমে আপনি একাধিক Observable এর মানগুলোকে একত্রিত করে প্রয়োজন অনুযায়ী ব্যবহার করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...