آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

terminology در Rxjava - قسمت دوم

شنبه, ۲ اسفند ۱۳۹۹، ۱۱:۴۰ ق.ظ

 در برنامه نویسی واکنشی (reactive programming) به جای داده (data) جریانی از داده (data flows) را داریم. به جریان داده stream هم گفته می شود.

به استریم قبل از اعمال اپراتور upStream و به استریم بعد از اعمال اپراتور downStream گفته می شود. شکل زیر:

 

تردینگ در RxJava:

Multi-Threading در RxJava بسیار ساده انجام میشه. بدون RxJava انجام یک پروسه در ترد بک گراند و ارسال نتیجه به ترد UI نیاز به کد زیادی داره، در حالی که با RxJava میشه توی دو خط این کارو انجام داد.

 

subscribeOn

میگه که observable سورس، دیتای خودشو توی کدوم ترد منتشر کنه. اگر چند تا از این بنویسیم فقط اولیش تاثیر داره. جای این اپراتور در chain فرقی نداره، چون قبل از اجرای اپراتورها (یعنی پس از ارزیابی subscriber) این اپراتور بررسی میشه.

 

نکته: تمامی اپراتورهای RxJava از نوع immutable هستند.

 

observeOn

cosumer دیتا رو توی تردی که توسط این اپراتور معرفی میشه، استفاده میکنه.

 

نکته: subscribeOn در upStream و observeOn در downStream اعمال می شود.

 

اگر بخواهیم هر عملیات را به صورت جداگانه در یک ترد انجام دهیم، چگونه می توان ترد را عوض کرد؟

برای تغییر ترد باید قبل از اپراتور مورد نظر از observeOn استفاده کنیم و ترد مد نظرمون رو معرفی کنیم. در این صورت آن اپراتور در این ترد تسک خود را انجام می دهد.

بنابراین تغییر ترد توسط "observeOn" انجام خواهد شد.

مثال:

getIntegersFromRemoteSource()
 .doOnNext(integer->println("Emitting item "+integer+" on: "+currentThread().getName()))
         .subscribeOn(Schedulers.io())
         .observeOn(Schedulers.computation())
         .map(integer->{
         println("Mapping item "+integer+" on: "+currentThread().getName());
         return integer*integer;
         })
         .observeOn(Schedulers.newThread())
         .filter(integer->{
         println("Filtering item "+integer+" on: "+currentThread().getName());
         return integer%2==0;
         })
         .observeOn(AndroidSchedulers.mainThread())
         .subscribe(integer->println("Consuming item "+integer+" on: "+currentThread().getName()));

 

نتیجه اخلاقی:

subscribeOn از اول تا جایی که هست ترد upStream را تغییر می دهد و observeOn از خودش تا observeOn بعدی ترد downStream را تغییر می دهد.

منبع شکل

 

مقالات خوب برای تردینگ:

1

2

3

4 - خیلی خوبه

5 - این مقاله خیلی خوب همه چیو توضیح داده

ویرگول

موافقین ۰ مخالفین ۰ ۹۹/۱۲/۰۲
میم دال

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی