Sobes.tech
Junior — Middle

RxJavaда Subject кайсы маалымат агымын көрсөтөт жана ал башка түрлөрдөн эмнеге айырмаланат?

sobes.tech AI

AIден жооп

RxJavaда Subject — бул өзгөчө түрдөгү маалымат агымы, ал бир эле учурда Observable жана Observer болуп саналат. Бул анын маалыматтарды чыгара алат (катталуучуларга) жана кабыл алат (башка Observable'дерден).

Subject менен жөнөкөй Observable арасындагы айырмачылыктар:

  • Мультикастинг: Subject бир нече катталуучуга бирдей маалыматтарды алууга мүмкүндүк берет, жөнөкөй Observable'дерден айырмаланып, алар алдын ала unicast болуп саналат.
  • Эвенттерди кол менен жөнөтүү мүмкүнчүлүгү: Сиз программалык түрдө onNext(), onError(), onComplete() методдорун чакырып, маалымат агымын көзөмөлдөй аласыз.
  • Төрдүү Subject түрлөрү: PublishSubject, BehaviorSubject, ReplaySubject жана AsyncSubject бар; ар бири өзгөчө сактоо жана чыгуу өзгөчөлүктөрүнө ээ.

PublishSubject колдонуу мисалы:

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

subject.subscribe(item -> System.out.println("Катталуучу 1: " + item));

subject.onNext("Салам");
subject.onNext("дүйнө");

subject.subscribe(item -> System.out.println("Катталуучу 2: " + item));

subject.onNext("!");

Бул мисалда, экинчи катталуучу гана "!" окуясын алат, анткени PublishSubject мурдагы маанилерди сактабайт.