 Scala Future onComplete மற்றும் AndThen செயல்பாடுகளுக்கு என்ன வித்தியாசம்?
`andThen` மற்றும் `onComplete` ஆகிய இரண்டும், ஒரு கால்பேக் செயல்பாட்டின் மூலம் சில எதிர்காலத்தின் முடிவைக் கவனிக்க உங்களை அனுமதிக்கின்றன. இருப்பினும், `அதன்பிறகு` சங்கிலியால் பிணைக்கப்படலாம், மேலும் `onComplete` போலல்லாமல், திரும்ப அழைக்கும் செயல்பாடுகள் பயன்படுத்தப்படும் வரிசைக்கு உத்தரவாதம் அளிக்கிறது. கூடுதலாக, `andThen` க்கு வழங்கப்படும் கால்பேக் ஒரு பகுதி செயல்பாடாக இருக்கலாம், விளைவுகளின் துணைக்குழுவை மட்டுமே கையாளும் (எ.கா. `வெற்றி` அல்லது `தோல்வி` மட்டுமே). `andThen` மற்றும் `map` ஐப் பயன்படுத்தி பின்வரும் உதாரணத்தைக் கவனியுங்கள்: ``` def demoAndThen(fut: Future[Int]): Future[Int] = {fut.andThen {case Success(value) => println(s"andThen1: $value") } .மற்றும் பிறகு { வழக்கு வெற்றி(மதிப்பு) => println(s"andThen2: $value") } .map { i => println(s"map: $i") i } } ``` போது ` fut` வெற்றிகரமாக முடிந்தது, "andthen1: ...", "andThen2: ..." மற்றும் "வரைபடம்: ..." ஆகியவை அந்த வரிசையில் அச்சிடப்படும். `onComplete` மற்றும் `map` ஐப் பயன்படுத்தி ஒத்த உதாரணத்தைக் கவனியுங்கள்: ``` def demoOnComplete(fut: Future[Int]): Future[Int] = {fut.onComplete {t: Try[Int] => println(s"onComplete1 : $t") } fut.onComplete {t: முயற்சி[Int] => println(s"onComplete2: $t") } fut.map { i => println(s"map: $i") i } } ` `` இந்த நிலையில், `fut` வெற்றிகரமாக முடிவடையும் போது, "onComplete1: ...", "onComplete2: ..." மற்றும் "வரைபடம்: ..." சில குறிப்பிடப்படாத வரிசையில் அச்சிடப்படும். `andThen` சங்கிலியால் இணைக்கப்பட்டிருந்தாலும், திரும்பப்பெறுதல் செயல்பாடு பொதுவாக விளைந்த `எதிர்காலம்` முடிவைப் பாதிக்காது. ஆனால் எச்சரிக்கையாக இருங்கள்: அழைப்பு சில அபாயகரமான பிழைகளை வீசினால், அதன் விளைவாக வரும் எதிர்காலம் ஒருபோதும் நிறைவடையாது.