finalize() এর মাধ্যমে Cleanup করা

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

240

RxJS (Reactive Extensions for JavaScript) অ্যাসিঙ্ক্রোনাস স্ট্রিম এবং ইভেন্টের মাধ্যমে কার্যকরী প্রোগ্রামিংয়ের জন্য ব্যবহৃত একটি শক্তিশালী লাইব্রেরি। finalize() অপারেটরটি RxJS-এ একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, যা স্ট্রিমের পরবর্তী কাজ সম্পন্ন করার সময় cleanup বা পরিস্কার করার কাজটি সম্পন্ন করতে ব্যবহৃত হয়। যখন একটি Observable সাবস্ক্রিপশন complete বা error ঘটে, তখন finalize() অপারেটরটি কাজ করে এবং আপনি এখানে রিসোর্স ক্লিনআপ করতে পারেন যেমন টাইমার ক্লিয়ার করা, HTTP রিকোয়েস্ট বন্ধ করা, অথবা ডাটা সংরক্ষণ করা।


finalize() অপারেটর এর ব্যবহার

finalize() অপারেটরটি আপনার Observable স্ট্রিমের শেষ হওয়ার সময় cleanup কার্যক্রম সম্পাদন করার জন্য ব্যবহৃত হয়। এটি একটি callback ফাংশন গ্রহণ করে যা complete() বা error() কল হওয়ার পর চালিত হয়।

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

  • cleanup: এটি সাধারণত রিসোর্স ক্লিনআপের জন্য ব্যবহৃত হয়, যেমন সাবস্ক্রিপশন বন্ধ করা, ইভেন্ট লিসেনার মুছে ফেলা, টাইমার ক্লিয়ার করা ইত্যাদি।
  • complete() বা error() পরবর্তী: যখন Observable সম্পূর্ণ বা ত্রুটি ঘটে, তখন finalize() এক্সিকিউট হয়।
  • যতবার সাবস্ক্রিপশন শেষ হবে: এটি একটি সাবস্ক্রিপশনের শেষে কার্যকরী হয়, তা সে complete() দ্বারা শেষ হোক বা error() দ্বারা।

finalize() এর উদাহরণ

উদাহরণ ১: complete() এর পর cleanup

import { of } from 'rxjs';
import { finalize } from 'rxjs/operators';

const observable = of('Hello', 'World').pipe(
  finalize(() => console.log('Observable completed. Performing cleanup.'))
);

observable.subscribe({
  next: (value) => console.log(value),
  complete: () => console.log('Complete!')
});

এই উদাহরণে, finalize() অপারেটরটি complete() কল হওয়ার পর "Observable completed. Performing cleanup." বার্তা প্রদর্শন করবে। আউটপুট হবে:

Hello
World
Complete!
Observable completed. Performing cleanup.

উদাহরণ ২: error() এর পর cleanup

import { of } from 'rxjs';
import { finalize } from 'rxjs/operators';

const observable = of('Hello', 'World').pipe(
  finalize(() => console.log('Observable completed or errored. Performing cleanup.'))
);

observable.subscribe({
  next: (value) => {
    console.log(value);
    if (value === 'World') {
      throw new Error('An error occurred!');
    }
  },
  error: (err) => console.log('Error:', err),
  complete: () => console.log('Complete!')
});

এখানে, World এ পৌঁছানোর পর throw দিয়ে একটি ত্রুটি তৈরি করা হচ্ছে এবং error() ব্লকের মাধ্যমে ত্রুটিটি হ্যান্ডেল করা হচ্ছে। তারপর finalize() ত্রুটি হওয়ার পরেও কার্যকরী হবে। আউটপুট হবে:

Hello
World
Error: An error occurred!
Observable completed or errored. Performing cleanup.

এখানে দেখানো হয়েছে যে, finalize() ত্রুটি ঘটলেও কার্যকরী হয়ে পরিষ্কারকরণ কাজ করবে।


finalize() ব্যবহার করার সাধারণ কেস

  • HTTP রিকোয়েস্টের পর রিসোর্স ক্লিনআপ: আপনি যখন কোনও HTTP রিকোয়েস্ট পাঠান, তখন finalize() ব্যবহার করে আপনি HTTP রিকোয়েস্টের পর ডাটা ক্লিনআপ বা UI আপডেট করতে পারেন।
  • টাইমার বন্ধ করা: যদি আপনি কোনও টাইমার চালাচ্ছেন, তবে Observable শেষ হলে finalize() এর মাধ্যমে টাইমার বন্ধ করা যেতে পারে।
  • সাবস্ক্রিপশন বন্ধ করা: আপনি যখন একটি Observable স্ট্রিমের সাবস্ক্রিপশন ব্যবহার করছেন, তখন finalize() ব্যবহার করে সাবস্ক্রিপশনটি বন্ধ বা ক্লিনআপ করতে পারেন।

সারাংশ

RxJS-এ finalize() অপারেটরটি ব্যবহৃত হয় একটি Observable স্ট্রিমের শেষ হওয়ার সময় cleanup কার্যক্রম সম্পন্ন করার জন্য। এটি complete() বা error() এর পরে এক্সিকিউট হয় এবং সাধারণত রিসোর্স ক্লিনআপ, ইভেন্ট লিসেনার মুছে ফেলা, টাইমার বন্ধ করা বা অন্যান্য প্রয়োজনীয় পরিস্কারকরণ কার্যক্রমের জন্য ব্যবহৃত হয়। finalize() অপারেটরটি আপনার কোডকে আরও নিরাপদ এবং কার্যকরী করে তোলে, বিশেষ করে যখন অ্যাসিঙ্ক্রোনাস স্ট্রিমের রিসোর্স পরিচালনার কথা আসে।

Content added By
Promotion

Are you sure to start over?

Loading...