Middle+
JavaScriptdagi Observable obyekti qaysi ma'lumotlar tuzilmasiga o'xshaydi?
sobes.tech AI
AIdan javob
Ma'lumotlar tuzilmasi Sovuq Observable (inglizchada Cold Observable), bu reaktiv dasturlash konsepsiyasidir (masalan, RxJS kutubxonasida).
Asosiy o'xshashliklar:
- Lazzatli tabiat: Observable faqat obuna bo'lganda qiymatlarni yubora boshlaydi. Obuna bo'lmasdan, Observable faol emas.
- Ko'p obunachilar, mustaqil oqimlar: Har yangi obunachi boshidan to'liq qiymatlar to'plamini oladi, boshqalardan mustaqil ravishda. Bu har bir obunachi uchun mustaqil ma'lumot oqimlarini yaratadi.
Sovuq observable tuzilmasining misoli (konseptual):
// Bu "qiymat generator" deb tasavvur qiling
function generateValues() {
let i = 0;
return {
// Keyingi qiymatni qaytaradigan metod
next: function() {
return { value: i++, done: false };
}
};
}
// "Observable" - asosan, faqat obuna qabul qiladigan funksiya
function coldObservableExample(subscriber) {
const generator = generateValues();
// Qiymatlarni yuborishni imitasiya qilish
setTimeout(() => {
subscriber.next(generator.next().value);
}, 100);
setTimeout(() => {
subscriber.next(generator.next().value);
}, 200);
setTimeout(() => {
subscriber.complete(); // Oqim yakunlandi
}, 300);
// Obuna ob'ekti qaytariladi (bekor qilish uchun)
return {
unsubscribe: () => {
console.log('Bekor qilish');
// Bu yerda generator/vaqt belgilovchilarni to'xtatish logikasi bo'lishi mumkin
}
};
}
// Obunachi 1
const subscription1 = coldObservableExample({
next: (value) => console.log('Obunachi 1 olgan:', value),
error: (err) => console.error('Xato 1:', err),
complete: () => console.log('Obunachi 1 tugadi')
});
// Obunachi 2 (boshidan qiymatlarni oladi)
setTimeout(() => {
const subscription2 = coldObservableExample({
next: (value) => console.log('Obunachi 2 olgan:', value),
error: (err) => console.error('Xato 2:', err),
complete: () => console.log('Obunachi 2 tugadi')
});
}, 150);
// Birinchi obunachini bekor qilish
setTimeout(() => {
subscription1.unsubscribe();
}, 250);
Issiq Observable (Hot Observable) bilan solishtirganda, u qiymatlarni darhol yubora boshlaydi, obuna bo'lsalar ham, bo'lmasalar ham, va barcha obunachilar obuna bo'lgan vaqtdan boshlab qiymatlarni oladi. Sovuq observable har bir yangi obunachi uchun to'liq ma'lumot oqimini saqlaydi va takrorlaydi. Bu xususiyat uni JavaScriptdagi Observable (RxJS va shunga o'xshash kutubxonalar kontekstida) konsepsiyasiga yaqinlashtiradi.
Solishtirish (soddalashtirilgan):
| Xususiyat | Sovuq Observable | Issiq Observable |
|---|---|---|
| Boshlanish | Obuna bo'lganda | Darhol |
| Oqim obuna uchun | Har biri uchun to'liq oqim | Obuna bo'lgandan keyin qiymatlar |
| Foydalanish | HTTP so'rovlar, fayllarni o'qish, iteratsiya | DOM voqealari, veb-socketlar, timerlar |