آموزش اپراتور یا عملگر Debounce در RxJava ، در این پست از تجاری اپ ما یکی دیگر از عملگر های RxJava به نام Debounce را مورد بررسی قرار می دهیم.
همچنین بخوانید:
اپراتورها یا عملگرهای RxJava
آموزش اپراتور یا عملگر Just در RxJava
آموزش اپراتور یا عملگر From در RxJava
اپراتور Debounce آیتم ها را تنها زمانی منتشر می کند که به یک بازه زمانی که ما مشخص می کنیم برسند.بیشترین کاربرد عملگر Debounce زمانی است که می خواهیم یک سری داده ها را به سرعت منتشر کنیم اما تنها زمانی که بشود از آنها استفاده کرد.
برای واضح تر شدن مفهوم اپراتور Debounce یک مثال خیلی کاربردی که تنها با Debounce() قابل اجراست را درادامه توضیح خواهیم داد.
اگر در اپلیکیشن گزینه جستجو داشته باشیم و می خواهیم جستجو به صورت آنی یا Realtime نتیجه دهد پس نیاز داریم که با وارد کردن هر کاراکتر توسط کاربر در لیست موجود جستجو انجام شود و نتیجه ها جدید شود.
خب طبیعتا این که با وارد کردن هرکاراکتر عملیات جستجو انجام شود کار بهینه ای نیست و حتی ممکن است کارایی اپ را کاهش دهد و سرعت را کند کند.
اینجاست که میتوان از عملگر Debounce استفاده کرد. بدین صورت که یک بازه 300 میلی ثانیه ای بین تایپ کاربر قرار داد بدین معنا که اگر کاربر فاصله بین تایپ هر کاراکترش کمتراز 300 میلی ثانیه بود عملیات جستجو انجام نشود و تنها اگر بین تایپ 300 میلی ثانیه فاصله افتاد عملیات جستجو انجام شود و نتیجه جدید شود به مثال زیر توجه کنید:
همچنین بخوانید:
آموزش عملگر ها یا اپراتور های Range و Repeat در RxJava
آموزش اپراتور یا عملگر Buffer در RxJava
مفاهیم Observable و Observer در RxJava
آموزش الگوی MVVM و RxJava به صورت پروژه محور + سورس کد
Observable obs;
obs = RxTextView.textChanges(activity.getBinding().edtUsername).
filter(charSequence ->
{
Log.e("filter run ", charSequence.toString());
return charSequence.length() > 3 && !baseUsername.equals(charSequence);
})
.debounce(2000, TimeUnit.MILLISECONDS)
.map(charSequence -> {
Log.e("map run ", charSequence.toString());
return charSequence.toString();
});
obs.subscribe(s -> {
Log.e("obs.subscribe run ", s);
if (!s.equals(baseUsername))
checkUsername(s);
});
امیدوارم این آموزش برای شما مفید بوده باشد…