2013-07-30 7 views
6

मैं जावास्क्रिप्ट, एचटीएमएल 5 और एंगुलरजेएस का उपयोग कर एक एप्लीकेशन लिख रहा हूं। इसे केवल हाल ही के ब्राउज़रों पर काम करना है (उदाहरण के लिए, आईई 10 लेकिन आईई 9 नहीं)।AngularJS एप्लिकेशन में गणना-गहन कार्य कैसे करें?

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

यदि मैं सिर्फ atob() या DOMParser.parseFromString() जैसी चीजें कॉल करता हूं, तो मुझे सेकंड या यहां तक ​​कि मिनटों के लिए एक उत्तरदायी ब्राउज़र मिल जाएगा। यह उपयोगकर्ता को स्पष्ट रूप से स्वीकार्य नहीं है।

मैंने अंगुलर की क्यू सेवा का उपयोग बाहरी वेब सेवा एसिंक्रोनस तक पहुंचने जैसी चीजों को बनाने के लिए किया है, और इसलिए प्रतिक्रिया का इंतजार करते समय ब्राउज़र को लटकने से बचें। लेकिन ऐसे परिचालनों में पहले से ही एसिंक्रोनस एपीआई है।

इन गणना-मंशा कार्यों के बारे में क्या, जिनके पास एसिंक्रोनस एपीआई नहीं है?

मैं इन कार्यों में से कुछ को थोड़ा सा, वादे का वादा कर सकता हूं। क्या इससे कोई मदद मिलती है? क्या ब्राउज़र संदेश कतार प्रत्येक कार्य के अंत में एक स्पिन प्राप्त करता है?

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

क्या अन्य लोग उत्तरदायी क्लाइंट-साइड वेब ऐप्स प्राप्त कर रहे हैं जिनमें गंभीर गणना शामिल है? यदि हां, तो वे इसे प्राप्त करने के लिए क्या उपयोग कर रहे हैं?

+0

सेवाओं को इंजेक्शन देने के लिए, एक कार्यकर्ता थ्रेड वैश्विक फ़ंक्शन importScripts ('script.js') का उपयोग कर सकता है - बस अगर आप इसे याद करते हैं। अफसोस की बात है, डेटा कॉपी करने की समस्या का कोई समाधान नहीं है। –

+1

मैं प्रयोग कर रहा हूं और मैं एक कार्यकर्ता में लोड करने के लिए कोणीय स्वयं नहीं प्राप्त कर सकता (इसे विंडो और दस्तावेज़ की आवश्यकता है), तो मुझे लगता है कि मैं कुछ भी कोणीय का उपयोग नहीं कर सकता? – PeteAC

उत्तर

3

ऐसा लगता है कि आप Parallel.js library देख रहे हैं।

यहाँ उनकी वेबसाइट से पुस्तकालय की एक त्वरित वर्णन है:।

"Parallel.js जावास्क्रिप्ट में मल्टी कोर प्रसंस्करण के लिए एक छोटे से पुस्तकालय है यह कभी परिपक्व वेब का पूरा लाभ लेने के लिए बनाया गया था श्रमिक एपीआई। "

मुझे वर्तमान में कोणीय में parallel.js के उपयोग के लिए विशिष्ट किसी भी उदाहरण के बारे में पता नहीं है, लेकिन मुझे यकीन है कि लाइब्रेरी को एक कोणीय सेवा के रूप में एकीकृत करना मुश्किल नहीं होगा।

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