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