2013-11-26 4 views

उत्तर

62

आप झूठी को async सेट जब आप की जरूरत से पहले ब्राउज़र अन्य कोड के पास ajax अनुरोध पूरा हो जाने की है कि:

<script> 
    // ... 
    $.ajax(... async: false ...); // Hey browser! first complete this request, 
            // then go for other codes 

    $.ajax(...); // Executed after the completion of the previous async:false request. 
</script> 

By default, the $ .ajax request in jQuery is set to asynchronous। परिवर्तनीय नाम async है और मान सत्य पर सेट है। इसने मुझे इसके बारे में पहले सीखने के साथ-साथ थोड़ा उलझन दिया, तो चलो इसे आगे बढ़ें।

सिंक्रोनस (async: false) - स्क्रिप्ट बंद हो जाती है और जारी रखने से पहले सर्वर को उत्तर भेजने के लिए प्रतीक्षा करता है। ऐसी कुछ स्थितियां हैं जहां सिंक्रोनस अजाक्स अनिवार्य है।

मानक वेब अनुप्रयोगों में, ग्राहक और सर्वर के बीच बातचीत तुल्यकालिक है। इसका मतलब है कि किसी को दूसरे के बाद होना है। यदि कोई ग्राहक किसी लिंक पर क्लिक करता है, तो अनुरोध सर्वर पर भेजा जाता है, जो परिणाम वापस भेजता है।

एक अनुरोध के खतरे की वजह से खो दिया है और

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

$.ajax({ 
     url: "file.php", 
     type: "POST", 
     async: false, 
     success: function(data) { 
       // ..... 
     } 
     }); 

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

$.ajax({ 
     url: "file.php", 
     type: "POST", 
     async: true, 
     success: function(data) { 
        // ..... 
     } 
     }); 

इसके अलावा इस लेख

Asynchronous and Synchronous AJAX calls

+1

आपके उत्तर के लिए धन्यवाद! यह वास्तव में उपयोगी है। –

+1

स्पष्ट कट जवाब! –

+0

async के बाद से इस पर कोई भी नया अपडेट जल्द ही हटा दिया जाएगा? – iWillGetBetter

3

पर एक नज़र डालें एक्सएचआर के लिए false ब्लॉक मुख्य थ्रेड (जावास्क्रिप्ट को क्रियान्वित करने, स्क्रीन प्रतिपादन, आदि के लिए जिम्मेदार) और इंतजार करने के लिए यह निर्धारित करना पूरा करना।

यह लगभग हमेशा एक भयानक विचार है। उपयोगकर्ताओं को उत्तरदायी यूआई पसंद नहीं है।

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