2011-10-28 15 views

उत्तर

23

यह असीमित है कि यह ब्राउज़र को लॉक नहीं करता है। यदि आप अजाक्स अनुरोध को आग लगाते हैं, तो उपयोगकर्ता अभी भी काम कर सकता है जबकि अनुरोध प्रतिक्रिया के लिए इंतजार कर रहा है। जब सर्वर प्रतिक्रिया देता है, तो कॉलबैक इसे संभालने के लिए चलाता है।

आप अगर आप चाहते हैं XMLHttpRequest तुल्यकालिक कर सकते हैं, और यदि आप ऐसा करेंगे, ब्राउज़र को ताले जबकि अनुरोध बकाया (ताकि समय यह अनुचित है के सबसे)

+2

-1 असिंक्रोनस का अर्थ है "एक ही समय में नहीं"। आपने एजेक्स के बारे में "एक ही समय में नहीं" क्या समझाया नहीं था। आपका उत्तर यह ध्वनि बनाता है जैसे आप कॉल के साथ एक ही समय में काम कर सकते हैं, इसलिए इसे एसिंक्रोनस कहा जाता है, जो व्याकरणिक रूप से कोई समझ नहीं आता है। – gcdev

+0

@gcdev मुझे लगता है कि यह भ्रम उत्पन्न होता है क्योंकि, जैसा कि पहले उल्लेख किया गया था [https://stackoverflow.com/questions/748175/asynchronous-vs-synchronous-execution-what-does-it-really-mean#comment57854159_748189), इस संदर्भ में "असीमित" और "तुल्यकालिक" दो या दो से अधिक कार्यों के बीच समय संबंधों का संदर्भ नहीं देता है; बल्कि वे एक कार्य और घड़ी के बीच संबंधों का उल्लेख करते हैं। इसलिए, यह जवाब समझ में आता है। – today

0

सीधे शब्दों में कहें, यह करने की जरूरत नहीं है नई जानकारी प्राप्त करने के लिए पूरे पृष्ठ को पुनः लोड करें। ईमेल क्लाइंट के बारे में सोचें। नए ईमेल देखने के लिए आपको पृष्ठ को रीफ्रेश करने की आवश्यकता नहीं होगी। अजाक्स सिर्फ नए ईमेल देखे जाने के लिए सर्वर को खींचता है, यदि ऐसा है तो उन्हें

+1

आईएमएचओ यह उत्तर AJAX, और सामान्य रूप से एसिंक्रोनि की एक गलत तस्वीर देता है। उपयोगकर्ता को मैन्युअल रूप से रीफ्रेश करने से रोकने के लिए न तो AJAX और न ही एसिंक्रॉनी सरल बार-बार मतदान के बराबर होती है। Asynchrony अवरुद्ध नहीं है (उदा।कुछ संसाधन अनुरोध लंबित होने पर आगे पेज/स्क्रिप्ट प्रसंस्करण को अवरुद्ध नहीं करना)। यह उत्तर इस अर्थ में सही है कि केवल एसिंक्रोनि के अलावा, AJAX भी नए डेटा को लोड करना और वर्तमान पृष्ठ को पूरी तरह से नया पृष्ठ लोड किए बिना अपडेट करना संभव बनाता है। – stakx

15

यह असीमित है क्योंकि क्लाइंट और सर्वर फ़ंक्शन कॉल की अवधि के लिए एक-दूसरे से स्वतंत्र रूप से चलते हैं।

सामान्य फ़ंक्शन कॉल के दौरान, आप कॉल करते हैं, और फ़ंक्शन कॉल समाप्त होने और लौटने तक कॉलिंग फ़ंक्शन फिर से निष्पादित नहीं होता है। कॉलर और कैली हमेशा सिंक्रनाइज़ होते हैं।

एक एसिंक्रोनस फ़ंक्शन कॉल के दौरान, आप कॉल करते हैं, और फिर कॉलर को तुरंत पर नियंत्रण नियंत्रित करते हैं। तब कैली बाद में कुछ अनिश्चित राशि का मूल्य देता है। वह "अनिश्चित समय" का अर्थ है कि कॉलर और कैली अब सिंक्रनाइज़ नहीं होते हैं, इसलिए यह असीमित है।

+0

धन्यवाद - मैं अंत में समझता हूं कि वास्तव में "तुल्यकालिक" और "असीमित" माना जाता है! यह हमेशा मुझे परेशान करता है कि जब आप एक ही समय में दो एजेक्स कॉल चलाते हैं (सिंक्रनाइज़) तो उन्हें "एसिंक्रोनस" कहा जाता है। आपने इसे अच्छी तरह से समझाया। – gcdev

0

आईई। जावास्क्रिप्ट निष्पादन के संदर्भ में, "अवरुद्ध" नहीं, क्योंकि प्रतिक्रिया एक घटना लूप द्वारा संभाला जाएगा।

-1

क्लाइंट और सर्वर फ़ंक्शन कॉल की अवधि के लिए एक-दूसरे से स्वतंत्र रूप से दौड़ते हैं।

सामान्य फ़ंक्शन कॉल - आप कॉल करते हैं, और फ़ंक्शन कॉल समाप्त होने और लौटने तक कॉलिंग फ़ंक्शन फिर से निष्पादित नहीं होता है। कॉलर और कैली हमेशा सिंक्रनाइज़ होते हैं।

असिंक्रोनस फ़ंक्शन कॉल - आप कॉल करते हैं, और फिर कॉलर को तत्काल रिटर्न नियंत्रित करते हैं। तब कैली बाद में कुछ अनिर्धारित राशि मान देता है। "अनिर्धारित समय" का अर्थ है कि कॉलर और कैली अब सिंक्रनाइज़ नहीं होते हैं, इसलिए यह असीमित है।

-1

सिंक्रोनस हमेशा कॉल करते समय अनुक्रम बनाए रखते हैं, लेकिन एसिंक्रोनस अनुक्रम बनाए नहीं रखता है।

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