RxJS-এর মধ্যে delay(), timeout(), এবং repeat() অপারেটরগুলো অ্যাসিঙ্ক্রোনাস ডেটা স্ট্রিমে সময়সীমা এবং পুনরাবৃত্তি নিয়ন্ত্রণের জন্য ব্যবহৃত হয়। এগুলি বিশেষ করে যখন আপনি ডেটা স্ট্রিমের গতি নিয়ন্ত্রণ করতে চান বা কোনো স্ট্রিম পুনরায় চালু করতে চান, তখন বেশ কার্যকরী হয়। এই অপারেটরগুলোর ব্যবহার বুঝতে হলে, আপনি কীভাবে ডেটার স্ট্রিমে নির্দিষ্ট সময়ের জন্য বিরতি বা বিলম্ব যোগ করতে পারেন, বা নির্দিষ্ট সময় পর স্ট্রিম পুনরাবৃত্তি করতে পারেন, তা জানতে হবে।
1. delay() অপারেটর
delay() অপারেটরটি একটি নির্দিষ্ট সময় (মিলিসেকেন্ডে) পর্যন্ত একটি Observable এর মানকে বিলম্বিত (delay) করে। এটি সাধারণত ইউজার ইন্টারফেস বা কোনো টাইমিং সম্পর্কিত কার্যক্রমের জন্য ব্যবহার করা হয়, যেখানে ডেটা বা ইভেন্টের মধ্যে একটি নির্দিষ্ট বিলম্ব চাই।
উদাহরণ:
import { of } from 'rxjs';
import { delay } from 'rxjs/operators';
const observable = of('Hello', 'World').pipe(
delay(2000) // ২ সেকেন্ড পর প্রতিটি মান পাঠাবে
);
observable.subscribe(val => console.log(val));
ব্যাখ্যা:
এখানে, delay(2000) অপারেটরটি ২ সেকেন্ড পরে Hello এবং World মান দুটি সাবস্ক্রাইবারকে পাঠাবে। এর মানে হলো, delay() ব্যবহার করে আপনি ডেটা পাঠানোর সময় বিলম্ব যোগ করতে পারেন।
আউটপুট:
Hello
World
বিলম্ব: ২ সেকেন্ড
2. timeout() অপারেটর
timeout() অপারেটরটি একটি নির্দিষ্ট সময়সীমার মধ্যে Observable থেকে ডেটা গ্রহণের জন্য ব্যবহৃত হয়। যদি নির্দিষ্ট সময়সীমার মধ্যে ডেটা না পাওয়া যায়, তাহলে এটি একটি ত্রুটি (error) তৈরি করে। এটি সাধারণত HTTP রিকোয়েস্ট বা ইউজার ইনপুটের ক্ষেত্রে ব্যবহৃত হয়, যেখানে আপনি চান যে কোনো ডেটা সঠিক সময়ের মধ্যে আসুক।
উদাহরণ:
import { of } from 'rxjs';
import { timeout } from 'rxjs/operators';
const observable = of('Hello', 'World').pipe(
timeout(1000) // ১ সেকেন্ডের মধ্যে ডেটা আসতে হবে
);
observable.subscribe({
next: val => console.log(val),
error: err => console.log('Error:', err)
});
ব্যাখ্যা:
এখানে, timeout(1000) অপারেটরটি ১ সেকেন্ডের মধ্যে ডেটা আসা নিশ্চিত করবে। যদি ১ সেকেন্ডের মধ্যে কোনো ডেটা না আসে, তাহলে এটি একটি ত্রুটি পাঠাবে। তবে এই উদাহরণে, আমরা প্রিসেট ডেটা ('Hello', 'World') ব্যবহার করেছি, সুতরাং কোনো ত্রুটি হবে না।
আউটপুট:
Hello
World
তবে যদি ডেটা না আসত, তাহলে:
Error: Timeout has occurred
3. repeat() অপারেটর
repeat() অপারেটরটি একটি Observable থেকে প্রাপ্ত মানগুলিকে পুনরাবৃত্তি করে। আপনি এটি ব্যবহার করে একটি Observable কে নির্দিষ্ট সংখ্যক বার বা ইনফিনিট বার পুনরাবৃত্তি করতে পারেন। এটি সাধারণত পুনরায় কার্যক্রম শুরু করার জন্য বা লুপ চালানোর জন্য ব্যবহৃত হয়।
উদাহরণ:
import { of } from 'rxjs';
import { repeat } from 'rxjs/operators';
const observable = of('Hello', 'World').pipe(
repeat(3) // ৩ বার পুনরাবৃত্তি করবে
);
observable.subscribe(val => console.log(val));
ব্যাখ্যা:
এখানে, repeat(3) অপারেটরটি 'Hello' এবং 'World' মানগুলোকে ৩ বার পুনরাবৃত্তি করবে। ফলস্বরূপ, এটি ৬টি মান সাবস্ক্রাইবারকে পাঠাবে।
আউটপুট:
Hello
World
Hello
World
Hello
World
সারাংশ
| অপারেটর | বর্ণনা | ব্যবহার |
|---|---|---|
delay() | একটি নির্দিষ্ট সময় (মিলিসেকেন্ড) পর Observable এর মান পাঠায়। | UI ইন্টারঅ্যাকশন বা ডেটা স্ট্রিমের মধ্যে বিলম্ব যোগ করা |
timeout() | একটি নির্দিষ্ট সময়ের মধ্যে Observable থেকে ডেটা আসতে না পারলে ত্রুটি (error) তৈরি করে। | নির্দিষ্ট সময়ের মধ্যে ডেটা আসা নিশ্চিত করতে ব্যবহৃত হয় |
repeat() | Observable এর মানগুলো নির্দিষ্ট সংখ্যক বার বা অনির্দিষ্টভাবে পুনরাবৃত্তি করে। | পুনরায় কোনো কাজ বা স্ট্রিম চালানোর জন্য ব্যবহৃত হয় |
এই অপারেটরগুলি RxJS-এ সময়সীমা এবং পুনরাবৃত্তি নিয়ন্ত্রণের জন্য খুবই কার্যকরী এবং এগুলি অ্যাসিঙ্ক্রোনাস স্ট্রিমের পরিচালনায় গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more