Middle+
JavaScript-də Observable obyekti hansı məlumat quruluşuna yaxındır?
sobes.tech Süni İntellekt
AI-dan cavab
Məlumatların quruluşu Soyuq Observable (ingiliscə Cold Observable), reaktiv proqramlaşdırmadan bir konsepsiyadır (məsələn, RxJS kitabxanasında).
Əsas oxşarlıqlar:
- Tənbəl təbiət: Bir Observable, yalnız abunəçi olduqda qiymətləri yaymağa başlayır. Abunə olmadan, Observable aktiv deyil.
- Çoxlu abunəçilər, müstəqil axınlar: Hər yeni abunəçi, əvvəlkindən asılı olmayaraq, tam qiymət dəstini əvvəldən alır. Bu, hər abunəçi üçün müstəqil məlumat axınları yaradır.
Soyuq Observable strukturunun nümunəsi (konseptual):
// Bu, "qiymət generatoru" kimi təsəvvür edin
function generateValues() {
let i = 0;
return {
// Növbəti qiyməti qaytaran metod
next: function() {
return { value: i++, done: false };
}
};
}
// "Observable" - əsasən, sadəcə, abunəçini qəbul edən funksiya
function coldObservableExample(subscriber) {
const generator = generateValues();
// Qiymətlərin yayılmasını təqlid edir
setTimeout(() => {
subscriber.next(generator.next().value);
}, 100);
setTimeout(() => {
subscriber.next(generator.next().value);
}, 200);
setTimeout(() => {
subscriber.complete(); // Axının tamamlanması
}, 300);
// Abunəlik obyektini qaytarır (lazım olduqda ləğv etmək üçün)
return {
unsubscribe: () => {
console.log('Ləğv et');
// Burada generator/timer-lərin dayandırılması üçün loqika ola bilər
}
};
}
// Abunəçi 1
const subscription1 = coldObservableExample({
next: (value) => console.log('Abunəçi 1 aldı:', value),
error: (err) => console.error('Xəta 1:', err),
complete: () => console.log('Abunəçi 1 tamamlandı')
});
// Abunəçi 2 (başlanğıcdan qiymətləri almağa başlayacaq)
setTimeout(() => {
const subscription2 = coldObservableExample({
next: (value) => console.log('Abunəçi 2 aldı:', value),
error: (err) => console.error('Xəta 2:', err),
complete: () => console.log('Abunəçi 2 tamamlandı')
});
}, 150);
// Birinci abunəçini ləğv et
setTimeout(() => {
subscription1.unsubscribe();
}, 250);
İsti Observable (Hot Observable) ilə müqayisədə, o, qiymətləri dərhal yaymağa başlayır, abunə olsalar da, olmasalar da, və bütün abunəçilər abunə olunduğu andan qiymətləri alır. Soyuq Observable, hər yeni abunəçi üçün tam məlumat axınını saxlayır və təkrarlayır. Bu xüsusiyyət onu JavaScript-dəki Observable (RxJS və oxşar kitabxanalar kontekstində) konsepsiyasına yaxınlaşdırır.
Müqayisə (sadələşdirilmiş):
| Xüsusiyyət | Soyuq Observable | İsti Observable |
|---|---|---|
| Başlanğıc | Abunə olunduqda | Dərhal |
| Axın abunəçilər üçün | Hər biri üçün tam axın | Abunə olunduğu andan qiymətlər |
| İstifadə | HTTP sorğuları, fayl oxuma, iterasiya | DOM hadisələri, veb-soketlər, zamanlayıcılar |