آموزش اپراتور یا عملگر Just در RxJava ، در پست های قبل در تجاری اپ ما از زوایای مختلف ، کتابخانه جامع RxJava برای اندروید را مورد بررسی قرار دادیم. برای مثال در پست مثال های کاربردی RxJava چندین مثال که ممکن است در انواع پروژه ها نیاز به پیاده سازی باشد را با RxJava پیاده کردیم که پیشنهاد میشود حتما مطالعه فرمایید.
در این پست از تجاری اپ میخواهیم اپراتور Just در RxJava را مورد بررسی قرار دهیم و در پست های آتی اپراتورهای بیشتری از RxJava را با جزییات به همراه مثال پیاده و بررسی کنیم.
همچنین بخوانید:
اپراتورها یا عملگرهای RxJava
آموزش زمانبندی وظایف با WorkManager در اندروید
ساخت dependency برای کتابخانه اندروید در گیت هاب با jitpack
عملگر Just در واقع لیستی از آرگومان ها را دریافت می کند و آنها را به آیتم هایی از جنس Observable تبدیل می کند.این اپراتور از یک تا 10 آرگومان دریافت می کند و با Observable کردن آنها می توان تمامی اپراتورهای RxJava را برروی آنها اعمال کرد.
در مثال زیر ما یک Observable از یک سری داده از جنس Integer ساختیم و در بلاک subscrib و OnNext هم به ترتیب و بصورت تکی هرکدام را لاگ کردیم
Observable.just(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "onNext: " + integer);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
خروجی
onNext: 1
onNext: 2
.
.
onNext: 9
onNext: 10
محدودیت عملگر Just تنها این است که بیش از 10 آرگومان دریافت نمی کند.
مثالی دیگر از اپراتور Just در RxJava :
در مثال زیر برعکس مثال فوق که ما مقادیر را به صورت تکی تبدیل به Observable کردیم ، مقادیر را به صورت آرایه به Observable تبدیل می کنیم پس در نتبجه در متد onNext مربوط به subscribe ما کل آرایه را یکجا خواهیم داشت.
همچنین بخوانید: مفاهیم Observable و Observer در RxJava
Integer[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
Observable.just(numbers)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer[] integers) {
Log.d(TAG, "onNext: " + integers.length);
// you might have to loop through the array
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
خروجی
onNext: 12