thenApply
এবং thenCompose
এর পদ্ধতি CompletableFuture
। যখন আপনি CompleteableFuture
এর সাথে ফলাফলের জন্য কিছু করার ইচ্ছা করছেন তখন সেগুলি ব্যবহার করুন Function
।
thenApply
এবং thenCompose
উভয়ই CompletableFuture
তাদের নিজস্ব ফলাফল হিসাবে ফিরে আসে । আপনি একাধিক thenApply
বা thenCompose
একসাথে চেইন করতে পারেন । Function
প্রতিটি কলটিতে একটি সরবরাহ করুন, যার ফলাফলটি পরের ইনপুট হবে Function
।
Function
আপনি কখনও কখনও সরবরাহকৃত কিছু সিঙ্ক্রোনাস নজর দিতে হবে। আপনার রিটার্নের ধরনটি Function
নন- Future
টাইপ হওয়া উচিত । এই ক্ষেত্রে আপনার ব্যবহার করা উচিত thenApply
।
CompletableFuture.completedFuture(1)
.thenApply((x)->x+1) // adding one to the result synchronously, returns int
.thenApply((y)->System.println(y)); // value of y is 1 + 1 = 2
অন্যান্য সময় আপনি এতে অ্যাসিক্রোনাস প্রসেসিং করতে চাইতে পারেন Function
। সেক্ষেত্রে আপনার ব্যবহার করা উচিত thenCompose
। আপনার রিটার্নের ধরনটি Function
একটি হওয়া উচিত CompletionStage
। Function
শৃঙ্খলে পরেরটি CompletionStage
ইনপুট হিসাবে এর ফলস্বরূপ পাবে , এইভাবে আন-র্যাপিং CompletionStage
।
// addOneAsync may be implemented by using another thread, or calling a remote method
abstract CompletableFuture<Integer> addOneAsync(int input);
CompletableFuture.completedFuture(1)
.thenCompose((x)->addOneAsync(x)) // doing something asynchronous, returns CompletableFuture<Integer>
.thenApply((y)->System.println(y)); // y is an Integer, the result of CompletableFuture<Integer> above
এটি জাভাস্ক্রিপ্ট-এর অনুরূপ ধারণা Promise
। Promise.then
এমন কোনও ফাংশন গ্রহণ করতে পারে যা হয় একটি মান বা একটি মানের একটি Promise
প্রদান করে। জাভাতে এই দুটি পদ্ধতির আলাদা নাম থাকার কারণটি জেনেরিক মুছে ফেলার কারণ । Function<? super T,? extends U> fn
এবং Function<? super T,? extends CompletionStage<U>> fn
একই রানটাইম টাইপ হিসাবে বিবেচিত হয় - Function
। সুতরাং thenApply
এবং thenCompose
আলাদাভাবে নামকরণ করতে হবে, বা জাভা সংকলক অনুরূপ পদ্ধতি স্বাক্ষর সম্পর্কে অভিযোগ করবে। জাভাস্ক্রিপ্টটি জাভা স্ক্রিপ্ট Promise.then
দুটি অংশে প্রয়োগ করা হয়েছে - thenApply
এবং thenCompose
- জাভা স্ক্রিপ্ট।
আপনি যদি কোনও সম্পর্কিত ফাংশন সম্পর্কে বিভ্রান্ত হন তবে আপনি আমার অন্যান্য উত্তরটি পড়তে পারেন thenApplyAsync
।
map
এবংflatMap
এStream
?thenApply
হয়map
এবংthenCompose
হয়flatMap
এরCompletableFuture
। আপনিthenCompose
থাকার এড়ানোর জন্য ব্যবহার করুনCompletableFuture<CompletableFuture<..>>
।