- বিষয় : সাবস্ক্রাইব করার সময় এটি সর্বদা ডেটা পায় যা সাবস্ক্রিপশন হওয়ার পরে ধাক্কা দেয় অর্থাৎ পূর্ববর্তী ধাক্কা মানগুলি না পাওয়া যায় ।
const mySubject = new Rx.Subject();
mySubject.next(1);
const subscription1 = mySubject.subscribe(x => {
console.log('From subscription 1:', x);
});
mySubject.next(2);
const subscription2 = mySubject.subscribe(x => {
console.log('From subscription 2:', x);
});
mySubject.next(3);
subscription1.unsubscribe();
mySubject.next(4);
এই উদাহরণ সহ, এখানে ফলাফলটি কনসোলে মুদ্রিত হবে:
From subscription 1: 2
From subscription 1: 3
From subscription 2: 3
From subscription 2: 4
দেরীতে আসা সাবস্ক্রিপশন কীভাবে সাবজেক্টে চাপানো হয়েছে এমন কিছু ডেটা হারিয়ে যাচ্ছে তা নোট করুন।
- পুনরায় খেলুন বিষয়গুলি : পূর্বের মানগুলির একটি বাফার রেখে সাহায্য করতে পারে যা নতুন সাবস্ক্রিপশনে প্রস্থানিত হবে।
এখানে রিপ্লে বিষয়গুলির জন্য ব্যবহারের উদাহরণ রয়েছে যেখানে একটি buffer of 2 previous values
নতুন সাবস্ক্রিপশনে রাখা হয় এবং নির্গত হয়:
const mySubject = new Rx.ReplaySubject(2);
mySubject.next(1);
mySubject.next(2);
mySubject.next(3);
mySubject.next(4);
mySubject.subscribe(x => {
console.log('From 1st sub:', x);
});
mySubject.next(5);
mySubject.subscribe(x => {
console.log('From 2nd sub:', x);
});
কনসোলে যা আমাদের দেয় তা এখানে:
From 1st sub: 3
From 1st sub: 4
From 1st sub: 5
From 2nd sub: 4
From 2nd sub: 5
- আচরণের বিষয়গুলি : রিপ্লে বিষয়গুলির সাথে সমান, তবে কেবলমাত্র সর্বশেষ নির্গত মান, বা কোনও মান পূর্বে নির্গত না হলে একটি ডিফল্ট মান পুনরায় নির্গত করবে:
const mySubject = new Rx.BehaviorSubject('Hey now!');
mySubject.subscribe(x => {
console.log('From 1st sub:', x);
});
mySubject.next(5);
mySubject.subscribe(x => {
console.log('From 2nd sub:', x);
});
এবং ফলাফল:
From 1st sub: Hey now!
From 1st sub: 5
From 2nd sub: 5
তথ্যসূত্র: https://alligator.io/rxjs/subjects/