2012-05-23 10 views
5

मैं एक वेब आधारित एप्लिकेशन (बड़े कार्गो विमान वजन और संतुलन) लिख रहा हूं जिसमें उपयोगकर्ता फूस वजन में प्रवेश करता है। जब एक व्यक्तिगत फूस का वजन दर्ज किया जाता है, तो यह निर्धारित करने के लिए कि कितना वजन स्वीकार किया जा सकता है, कई चेक किए जाने हैं। आवश्यक गणना चक्रों के मामले में चेक सभी अपेक्षाकृत मामूली हैं; एक नहीं है। जैसा कि मैं इसे समझता हूं, जावास्क्रिप्ट एकल-थ्रेडेड है, जिसका अर्थ यह है कि यदि उपयोगकर्ता किसी अन्य फूस की स्थिति में वजन दर्ज करना शुरू कर देता है, तो वह पिछला वजन पूरी तरह से संसाधित होने तक बंद हो जाएगा।एक गणना गहन ऑपरेशन को संभालने

मैं उपयोगकर्ता को वज़न में प्रवेश करने के लिए हर समय इंतजार नहीं कर सकता (जिसे उन्हें फिलहाल ऐसा करने की ज़रूरत नहीं है क्योंकि ऐप वर्तमान में यह अंतिम चेक ठीक से नहीं करता है)। वर्तमान में मैं अंतिम गणना-गहन कदम नहीं करने के बारे में सोच रहा हूं जब तक कि सभी वजन दर्ज नहीं किए जाते हैं और उपयोगकर्ता बटन पर क्लिक करके ऐसा संकेत देता है। हालांकि, यह तत्काल प्रतिक्रिया के उपयोगकर्ता को वंचित कर देगा क्योंकि किस वजन ने शुरुआत में समस्या को ट्रिगर किया था, एक समस्या जिसमें एकाधिक वजन योगदान कर सकते हैं, और अगर उन्हें आखिरी तक इंतजार करना पड़ता है तो हल करने में मुश्किल होगी।

मेरी Google खोज विषय पर कुछ हद तक उपयोगी रही है, लेकिन मैं दुविधा के लिए एक अद्यतित समाधान के लिए संभावित विचारों के लिए यहां पूछ रहा हूं। किसी भी सुझाव का स्वागत है। http://terryliittschwager.com/WB/JWB.php पर जाकर और एक विमान का चयन करके समस्या का संदर्भ देखा जा सकता है।

+0

कितनी गणना के लिए उस समय की आवश्यकता होगी? – ninjagecko

+0

@ninjagecko गणना यह देखने के लिए जांच कर रही है कि "संयुक्त रैखिक लोडिंग" कहलाता है या नहीं। 747 का कार्गो सेक्शन बैलेंस आर्म (बीए) 200 से बीए तक लगभग 2,165 इंच फैलाता है। 2365. monocoque (और अन्य) सीमाओं को संयुक्त रैखिक लोडिंग अधिकतम में व्यक्त किया जाता है, और यह इंच द्वारा स्थान पर परिवर्तनीय depdning है। इसलिए, मैं प्रत्येक प्रविष्टि पर 2,165 पुनरावृत्ति पाश को देख रहा हूं जिसमें कई चीजें हैं। समस्याओं में से एक यह है कि कंप्यूटर, हरारे, जिम्बाब्वे, नवीनतम नहीं हैं। वे धीमे हैं, और मुझे इसके लिए सेट अप करना होगा। – Terry

+0

क्या आपको वास्तव में हर इंच के लिए लूप करना है? क्या कोई तरीका है कि आप कम गणना कर सकते हैं या कुछ कंप्यूटेशंस पूर्व-गणना कर सकते हैं? – zortacon

उत्तर

2

यदि आप इसे क्लाइंट साइड करना चाहते हैं, तो मैं वेबवर्कर्स को देखने की अनुशंसा करता हूं। वे मुख्य (डीओएम) जेएस थ्रेड से अलग धागे पर दौड़ते हैं। सभी ब्राउज़रों में बिल्कुल समर्थित नहीं है (बेशक), लेकिन वर्तमान में क्रोम, एफएफ, सफारी और आईई 10 में समर्थित है।

संपादित करें: WebWorkers के लिए एमडीएन शुरू करने के लिए एक अच्छी जगह है।

+0

धन्यवाद, मैं एक नज़र डालेगा। इसे क्लाइंट-साइड (जिसे मुझे कहा जाना चाहिए) किया जाना चाहिए क्योंकि इंटरनेट एक्सेस अनुपलब्ध होने पर इसे चलाने में सक्षम होना चाहिए। – Terry

1

आप लंबे समय के लिए अजाक्स और बाकी के लिए जावास्क्रिप्ट का उपयोग कर सकते हैं। या यदि संभव हो तो गणना को तोड़ दें और इसे एक समय में थोड़ा सा करें। http://www.sitepoint.com/multi-threading-javascript/

+1

इनपुट के लिए धन्यवाद। दुर्भाग्य से मैंने अपने मूल प्रश्न में यह कहने की उपेक्षा की कि इसे आवश्यक होने पर इंटरनेट एक्सेस के बिना चलाना होगा। – Terry

+1

वेब सर्वर! = इंटरनेट का उपयोग। मैंने कई ऑफ़लाइन समाधान बनाए हैं जो नेट :: सर्वर का उपयोग करके एक पर्ल द्वारा संचालित थे। या अपाचे या आईआईएस स्थापित करें। किसी भी मामले में, प्रसंस्करण जावास्क्रिप्ट के बाहर किया जाता है इसलिए कोई अवरोध नहीं होता है। – zortacon

+1

आह, मैंने उस संभावना के बारे में सोचा नहीं था। जियो और सीखो। धन्यवाद। – Terry

संबंधित मुद्दे