सभी डीबी कॉल आपको तुरंत पर वापस आ जाएंगी Futures
. के साथ , भले ही उन्होंने अपना कार्य समाप्त न किया हो। यह एसिंक्रोनस है सिंक्रोनस नहीं।
Futures
. को समायोजित करने के लिए आप अपना कोड बदल सकते हैं दो में से एक तरीके से:
-
आप
Await.result
का उपयोग कर सकते हैं सभी डीबी कॉल के साथ, उस बिंदु पर पूरा होने तक प्रतीक्षा करने के लिए, उदाहरण के लिए:Await.result(db.run(insertEffect), Duration.Inf)
-
आप
.map
. का उपयोग कर सकते हैं (या.flatMap
यदि आप किसी अन्यFutures
का उपयोग कर रहे हैं भीतर से), कोड के साथ जिसे आप डीबी ऑपरेशन पूरा होने पर चलाना चाहते हैं। उदाहरण के लिए:db.run(insertEffect).map(_ => ... do stuff... )
एक और स्टैक ओवरफ़्लो देखें धागा कारण के बारे में कुछ विचारों के साथ अपवाद के संबंध में।