Middle
Observable nima?
sobes.tech AI
AIdan javob
Observable — bu ma'lumotlar yoki voqealar oqimini ifodalovchi va asinxron bo'lishi mumkin bo'lgan mavjudlik. Kuzatiladigan manbalar ma'lum bir vaqt davomida qiymatlarni chiqarishi mumkin, va obuna bo'luvchilar (Subscribers yoki Observers) bu qiymatlarga ularning paydo bo'lishiga qarab javob berishlari mumkin.
Asosiy tushunchalar:
- Observable (Kuzatiladigan manba): Ma'lumot yoki voqealar manbai.
- Observer (Kuzatuvchi): Observable voqealariga javob berish uchun metodlarga ega obyekt (
next,error,complete).next: Navbatdagi qiymatni olish.error: Xato yuzaga kelishi.complete: Ma'lumot oqimining tugashi.
- Subscription (Obuna): Observable va Observer o'rtasidagi bog'lanish.
subscribemetodini chaqirish bilan obuna yaratiladi. Bu Observerga qiymatlarni olish va obuna hayot tsikmini boshqarish imkonini beradi (masalan, xotira oqib ketishini oldini olish uchun obunani bekor qilish). - Operators (Operatorlar): Observable oqimlarini transformatsiya qilish, birlashtirish va boshqarish uchun funksiyalar. Misollar:
map,filter,mergeMap,debounceTime.
Promise-lardan farqli o'laroq, Observable ko'plab qiymatlarni vaqt o'tishi bilan chiqarishi mumkin, bu ma'lumotlar oqimlarini ifodalaydi, yagona asinxron voqea emas.
RxJSda foydalanish misoli (populyar reaktiv dasturlash kutubxonasi):
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
// Arraydan Observable yaratish
const source = new Observable(observer => {
observer.next(1);
observer.next(2);
observer.next(3);
observer.complete(); // Oqimni tugatish
});
// Obuna bo'lish va operatorni ishlatish
const subscription = source.pipe(
map(value => value * 2) // map operator har bir qiymatni ikki baravar oshiradi
).subscribe({
next: value => console.log(value), // Qiymatlarni qabul qilish: 2, 4, 6
error: err => console.error(err), // Xatolarni boshqarish
complete: () => console.log('Complete!') // Tugash
});
Asosiy afzalliklar:
- Reaktiv dasturlash: asinxron ma'lumot oqimlarini qulay boshqarish.
- Komponensiyalashuv: operatorlar yordamida oqimlarni oson birlashtirish va transformatsiya qilish imkoniyati.
- Hayot tsikli boshqaruvi: obuna ma'lumotlarni qabul qilishni aniq boshqarish va xotira oqib ketishini oldini olish.