Sobes.tech
Junior — Middle

RxJava-ში Subject რა ტიპის მონაცემთა ნაკადს წარმოადგენს და როგორ განსხვავდება სხვა ტიპებისგან?

sobes.tech AI

პასუხი AI-სგან

RxJava-də Subject — həm Observable, həm də Observer olan xüsusi bir məlumat axını növüdür. Bu, onun həm məlumatları yaymağa (abunələrə), həm də qəbul etməyə (digər Observable-lərdən) imkan verir.

Subject və adi Observable arasındakı fərqlər:

  • Çoxsaylı yayım: Subject, bir neçə abunəçinin eyni məlumatları almasına imkan verir, fərqli olaraq adi Observable'lar, standart olaraq unicast-dir.
  • Əl ilə hadisə göndərmə imkanı: Siz proqram vasitəsilə onNext(), onError(), onComplete() metodlarını çağıraraq məlumat axınını idarə edə bilərsiniz.
  • Fərqli Subject növləri: PublishSubject, BehaviorSubject, ReplaySubject və AsyncSubject mövcuddur; hər biri hadisələrin saxlanması və yayılması xüsusiyyətlərinə malikdir.

PublishSubject istifadə nümunəsi:

PublishSubject<String> subject = PublishSubject.create();

subject.subscribe(item -> System.out.println("Abunəçi 1: " + item));

subject.onNext("Salam");
subject.onNext("Dünya");

subject.subscribe(item -> System.out.println("Abunəçi 2: " + item));

subject.onNext("!");

Burada, ikinci abunəçi yalnız "!" hadisəsini alacaq, çünki PublishSubject əvvəlki dəyərləri saxlamır.