به نام خدا

امیدوارم قبل شروع این مطلب قسمت اول تا سوم رو خونده باشید

اینبار میخوام تفاوت چندتا از Observable ها رو براتون بگم.

اگر سایت های خارجی یا داکیومنت خود Rx رو مطالعه کرده باشید متوجه میشید که Observable Subject ها قابلیت Observer و Observable رو همزمان در کنار هم دارند که به چند دسته تقسیم میشن:

 

  • AsyncSubject: هیچ onNext را emit نمی کند تا به onComplete برسد، در آن هنگام آخرین مقدار خود را emit میکند اگر هم که به error بربخورد فقط error را میدهد و هیچ مقداری به onSuccess ما نمیدهد.
  • BehaviorSubject: یکی از پرکاربردترین Observable Subject ها برای منه :) به اینصورت کار میکنه که هرموقع هرجا subscribe بشه، آخرین مقدارشو براش میفرسته و از اون به بعد هم همه onNext ها رو براش emit میکنه.
  • PublishSubject: هرموقع که کسی subscribeش کنه فقط خبر های جدید رو براش میفرسته و از قبلیا هیچی بهش نمیده (اگه در نهایت با ارور مواجه شده باشه یا onComplete شده باشه وقتی کسی subscribe میکنه اگه ارور آخریش بوده باشه ارور میده و اگه compelete بوده باشه هم کامپیلیت میشه)
  • ReplaySubject: هرموقع هرکی صداش میزنه هممممه اخبار گذشته رو بهش میده حتی اگه با error هم مواجه شده باشه هممه onNext هایی که بوده رو براش میفرسته و در نهایت ارور رو بهش میده
  • UnicastSubject: زیاد باهاش کار نکردم ولی فکر میکنم همه event هایی که بهش میدید رو ذخیره میکنه و هرموقع یکی بهش وصل بشه همه رو بهش میده دقت کنید که فقط یه observer رو میتونه توی طول عمرش پشتیبانی کنه یعنی اول همه اونایی که داشته رو به این تنها خوشبخت observer میده و از اون به بعد هم همراهیش میکنه تا یا خودش terminate بشه و یا اون observer خوشبختمون unsubscribe کنه