شنيا الفرق بين وظائف Scala Future onComplete و andThen؟
كلاهما `andThen` و `onComplete` يسمحولك تتفرج على نتيجة بعض المستقبل عن طريق وظيفة استدعاء. وبالرغم من هذا، `andThen` يُمْكِنْ يْكُونْ مَرْبُوطْ، و على عكس `onComplete`، يضمن الترتيب الّي تُتْعْمَلْ فيه وظائف النداء. إضافية، المكالمة العاكسة لـ `andThen` يمكن تكون وظيفة جزئية، وتتعامل فقط مع مجموعة فرعية من النتائج (مثلاً، فقط `Success` أو فقط `Failure`).  خلينا نتصور في المثال الي يلي باستخدام `andThen` و `map`:  ` `` def demoAndThen(fut: Future[Int]): Future[Int] = { fut.andThen {حالة نجاح (قيمة) => println (قيمة) .andThen {حالة نجاح ((قيمة) => println ((s"andThen2: $قيمة") } . {map i => println ((s"map: $i") أنا } } ` ``  وقتما `fut` يكتمل بنجاح، "و بعد1:..."، "و بعد2:..." و "خريطة:..." يطبعوا بالترتيب هذا.  خلينا نتصور في المثال المماثل باستخدام `onComplete` و `map`:  ` `` def demoOnComplete ((fut: Future[Int]): Future[Int] = { fut.onComplete { t: Try[Int] => println{"s"onComplete1: $t") } fut.onComplete { t: Try[Int] => println{"s"onComplete2: $t") } fut.map { i => println ((s"map: $i") أنا } } ` ``  في الحالة هذي، وقتلي `fut` يكتمل بنجاح، "onComplete1:..."، "onComplete2:..." و "map:..." يطبعوا في ترتيب غير محدد.  بالرغم من إن ∀andThen∀ يمتسلسل، دالة المكالمة العائدة عادة ما تتأثرش بنتيجة ∀Future∀ الناتجة. آمَا احذِّرْ: إِذَا كَانْ المُسَمَّى يْجِيبْ بَعْضْ الخُطَايَا الخَايْبَة، المُستَقْبَلْ الِّي يْجِي مِنْهَا مَا يْكَمِّلْشْ.