আরএক্সজাভাতে পর্যবেক্ষণযোগ্য, পরিপূরণযোগ্য এবং একক মধ্যে পার্থক্য কী


113

স্পষ্ট উদাহরণ দিয়ে RxJava তে পর্যবেক্ষণযোগ্য, পরিপূরণযোগ্য এবং একক মধ্যে পার্থক্যটি দয়া করে কেউ ব্যাখ্যা করতে পারেন?

কোন দৃশ্যে আমরা একজনকে অন্যের উপরে ব্যবহার করি?


আপনি কিছু অভিজ্ঞতা আছে?
জে ছোমেল

আমি সম্প্রতি শুরু করেছি .. @ জে.চোমেল
রাজা জওহর

25
এটি পুরোপুরি বৈধ প্রশ্ন এবং এটি বন্ধ করা উচিত হয়নি। যদিও আরএক্স একটি দুর্দান্ত গ্রন্থাগার, ডকুমেন্টেশন এবং উদাহরণগুলি দুর্ভাগ্যক্রমে অত্যন্ত দুর্বল এবং বিভ্রান্তিকর।
রানলুপ

উত্তর:


247

Observableসময়ের সাথে সাথে মানগুলি নির্ধারণ করে এমন ইভেন্ট উত্সের জেনেরিক রিঅ্যাকটিভএক্স বিল্ডিং ব্লক।
সংক্ষিপ্ত পর্যবেক্ষণযোগ্য ইভেন্টগুলিতে (এবং এভাবে প্রতিটি ভাষায় ReactiveX প্রসারিত রয়েছে)
হ'ল : onNext * (onCompleted | onError)? / (* শূন্য বা আরও বেশি? - শূন্য বা 1)

Singleএবং CompletableRxJava এ একচেটিয়াভাবে প্রবর্তিত নতুন ধরণের যা হ্রাসপ্রাপ্ত প্রকারের প্রতিনিধিত্ব করে Observable, এতে আরও সংক্ষিপ্ত API রয়েছে।

Singleপ্রতিনিধিত্ব Observableকরে নির্গত একক মান বা ত্রুটি।

Completableপ্রতিনিধিত্ব করে Observableযে কোনও মান নির্গত করে না, তবে কেবলমাত্র টার্মিনাল ইভেন্টগুলি হয় onErrororonCompleted

যে পদ্ধতিটি ফিরে আসে তার পার্থক্যের মতো পার্থক্যগুলি আপনি ভাবতে পারেন:

  • অবজেক্টস সংগ্রহ - পর্যবেক্ষণযোগ্য

  • একক বস্তু - একক

  • এবং পদ্ধতি যা কোনও মান দেয় না (শূন্য পদ্ধতি) - পরিপূরণযোগ্য।

Singleআপনি যখন পর্যবেক্ষণযোগ্য টাস্কটিভ ভিত্তিযুক্ত হন এবং আপনি একক মান যেমন প্রত্যাখ্যানযোগ্য নেটওয়ার্ক অনুরোধ এবং প্রত্যাবর্তনের মান (বা ত্রুটি) প্রত্যাশা করেন তখন উপযুক্ত হতে পারে, নেটওয়ার্ক কলটি এক সময়ের ফ্যাশনে পরিচালিত হয়, যার অর্থ আপনি অতিরিক্ত মানগুলি প্রত্যাবর্তনের আশা করেন না সময়ের সাথে সাথে আরেকটি উদাহরণ হ'ল ডিবি আনার তথ্য অপারেশন।

Completableউপযুক্ত যখন আপনার একটি থাকে Observableএবং আপনি অপারেশন থেকে প্রাপ্ত মান সম্পর্কে চিন্তা করেন না, বা কোনও কিছুই নেই। উদাহরণস্বরূপ ক্যাশে আপডেট করা হচ্ছে উদাহরণস্বরূপ, অপারেশন হয় সফল / ব্যর্থ হতে পারে, তবে এর কোনও মূল্য নেই।
আরেকটি উদাহরণ হ'ল কিছু দীর্ঘ চলমান ডিআইআর অপারেশন যা কোনও কিছুই ফেরায় না। এটি আপডেট / পুট নেটওয়ার্ক কল হতে পারে যা কেবলমাত্র সাফল্যের ইঙ্গিত দিয়েছিল।

যে কোনও ক্ষেত্রে, কমপ্লিটেবল এবং সিঙ্গেলগুলি নতুন সক্ষমতা যুক্ত করছে না তবে তারা আরও শক্তিশালী এবং সংক্ষিপ্ত এপিআই প্রবর্তন করছে, যা এইপিআইয়ের প্রকাশিত পর্যবেক্ষণের পিছনে ক্রিয়াকলাপ সম্পর্কে আরও জানায়।

সম্পাদনা:

আরএক্সজেভা 2 Maybe:

আরএক্সজেভা 2 একটি নতুন ধরণের যোগ করেছে Maybe, Maybeএটি হ'ল Completableএবং একক এর সংমিশ্রণ ।

উপরের মতো একই ভাষায়, Maybeএমন একটি পদ্ধতি হিসাবে ভাবা যেতে পারে যা Optionalকোনও প্রকারের প্রত্যাবর্তন , Optionalঅবজেক্টের চারপাশে একটি মোড়ক যা স্পষ্টভাবে বলে দেয় যে আমাদের এতে কিছু মূল্য আছে কিনা - Objectবা (নাল পরিবর্তে)।
সঙ্গে Maybeআমরা হয় ঠিক মত কিছু মান থাকতে পারে Singleবা রিটার্ন নেই - শুধু মত Completable। অতিরিক্ত হিসাবে, উভয়ের মতোই আমাদেরও ত্রুটি রয়েছে।
Maybeমূল্যবান যখন আমরা চিহ্নিত করতে চাই যে কোনওটির Observableএকটি মান নাও থাকতে পারে এবং এটি সম্পূর্ণ হবে।
ক্যাশে থেকে একটি উদাহরণ এনে দেওয়া হবে, আমাদের অগত্যা ক্যাশে কোনও মূল্য থাকবে না, সুতরাং এই ক্ষেত্রে আমরা সম্পূর্ণ করব, ow আমরা onNextক্যাশে থেকে মানটি পাব ।
এটি RxJava2 সহ একটি স্ট্রিমে নন-নাল মানগুলি হ্যান্ডেল করার উপযুক্ত।

আরএক্সজেভা 2 Flowable:

প্রথমত, ব্যাকপ্রেসার সংজ্ঞায়িত করা যাক। ব্যাকপ্রেসার এমন পরিস্থিতি পরিচালনার একটি মাধ্যম যেখানে ডেটা প্রক্রিয়া করার চেয়ে দ্রুত তৈরি করা হয়। Flowableআইটেমগুলিকে অনুরোধ করার জন্য ডাউন স্ট্রিমটিকে মঞ্জুরি দেওয়ার ব্যাকপ্রেসার সমর্থন রয়েছে। আপনি এখানে পার্থক্য সম্পর্কে আরও পড়তে পারেন ।


2
প্রবাহমান কি?
নিরাজ চৌহান

সুতরাং আমি যদি কোটলিনে লিখছি তবে তা Maybe<T>মূলত Single<T?>?
আভেরিন

আপনি কি ফেরত মান সহ বিবেচনা Singleকরতে পারেন Completable?
oদও 95

13
  1. Flowable এবং পর্যবেক্ষণযোগ্য সসীম বা অসীম স্ট্রিম উপস্থাপন করতে পারেন। প্রবাহিত সমর্থন পিছনে চাপ
  2. একক একক উপাদান সহ স্ট্রিম।
  3. 0 বা একটি উপাদান সহ স্ট্রিমগুলিও হতে পারে
  4. অবশেষে একটি কমপ্লিটেবল কোনও উপাদান ছাড়াই একটি স্ট্রিমের প্রতিনিধিত্ব করে, অর্থাত্ এটি কেবল কোনও মান ব্যতীত বা ব্যর্থ হলে সম্পূর্ণ করতে পারে।

আরএক্সজাভা বিভাগে একটি সংক্ষিপ্ত উত্তর আমি এখানে পেয়েছি ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.