मेरे पास एक ऐसी स्थिति है जहां मैं कई (चार कहें) AJAX कॉल कर रहा हूं (AngularJS http का उपयोग करके, यदि यह मायने रखता है) और मैं चाहता हूं कि प्रत्येक कॉल कॉलबैक करे और काउंटर बढ़ाए, तो मुझे पता चलेगा कि सभी (चार) धागे पूरा हो गए हैं।ब्राउज़र में जावास्क्रिप्ट में एक समवर्ती पढ़ने/लिखने के पढ़ने/लिखने के लिए यह संभव है?
मेरी चिंता यह है कि चूंकि जावास्क्रिप्ट में जावा के "सिंक्रनाइज़" या "अस्थिर" कीवर्ड की तुलना में कुछ भी तुलनीय नहीं है, इसलिए काउंटर को बढ़ाने के दौरान एकाधिक समवर्ती धागे को टक्कर मारना संभव होगा, जिससे कुछ वृद्धि हुई है।
दूसरे शब्दों में, दो धागे एक ही समय में आते हैं, और दोनों काउंटर को पढ़ते हैं, वही मान प्राप्त करते हैं (उदाहरण के लिए 100)। फिर दोनों धागे उस काउंटर (101 तक) बढ़ाते हैं और नए मूल्य को स्टोर करते हैं, और देखते हैं, हम एक गिनती (102 के बजाय 101) चूक गए!
मुझे पता है कि जावास्क्रिप्ट को एकल थ्रेड माना जाना चाहिए, लेकिन अपवाद हैं।
क्या यह स्थिति ब्राउज़र में संभव है, और यदि हां, तो क्या इसके खिलाफ सुरक्षा करने का कोई तरीका है?
वादे के कारण काउंटर की कोई आवश्यकता नहीं है। 'Q q.all()' पर एक नज़र डालें। '$ http' एक वादा देता है और आप वादे की एक सरणी लपेट सकते हैं और कॉल कर सकते हैं जब वे सभी – charlietfl
पूरा करते हैं, यह मेरे साथ कभी नहीं हुआ है, AFAIR, लेकिन मैं एक उत्तर का इंतजार कर रहा हूं! अच्छा प्रश्न! – shaheer
@mplungjan बहुत धीमा होगा – shaheer