آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

این قطعه کد rxJava چطور کار میکنه ؟

NullPointerException  8 سال پیش  8 سال پیش
0 0

سلام دوستان، درحال یادگیری rxJava هستم که به مواردی بر خوردم که نمیدونم این کد نویسی جاوا یعنی چی و چطور داره کار میکنه، لطفا دوستان راهنمایی کنید :

این قطعه کد مربوط به دریافت جیسون از سرور است که با رتروفیت کار میکنه :

 private void loadJSON() {

RequestInterface requestInterface = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build().create(RequestInterface.class);

mCompositeDisposable.add(requestInterface.register()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(this::handleResponse,this::handleError));
}

خط آخر برام نامفهومه : 

this::handleResponse

اون چهار نقطه چ کاری و انجام میده؟  که معادل همین خط و میشه به این صورت هم نوشت :

 response -> handleResponse(response)

یعنی سوالم اینه که اون چهار نقطه و این فلش <- چ کاری و انجام میدن و چطوری ورودی متد و بدون اینکه ما پر کنیم پر میشه ؟

ممنون

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
k112  8 سال پیش
+1 0

با سلام ... Method Reference و Lambda رو مطالعه کنید.

خط اخر this::handleResponse,this::handleError هر دو تابع هستن که به اون تابع فرستاده شده اند. و به ازای هر ورودی که هر دو اون تابع ها در تابع subscribe صدا زده میشن (بهر طریقی که نوشته شده است) 

بعد علامت فلش هم مربوط به لامبدا هست 

lambda expression در جاوا 8 اضافه شده است و با استفاده از آن می توان یک تابع (function) با پارامتر های ورودی و بدنه تابع تعریف کرد. lambda expression ها باعث میشن که از Anonymous Inner Class ها استفاده نکنیم یا در عوض این نوع کلاس ها استفاده میشن.

 

0 0
ممنون از شما، تو همین قطعه کد از کلاس CompositeDisposable استفاده شده که شبیه ArrayList قابلیت ادد و ... داره و کلا فهمیدم که همزمان چندین subscription را میتونه dispose کنه، کار دیگه هم میکنه ؟ میشه بیشتر در موردش توضیح بدین ؟ (8 سال پیش)
+1 0
من از rxjs استفاده کردم و با این کلاس اشنایی ندارم متاسفانه (8 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .