बहुत बस:
function someFunction() {
//1. code that needs to run before ajax
$.ajax({...}).done(function() {
//2. code that needs to be run after the ajax call has returned
});
//3. code that needs to be run between the time the user presses
// a button and the time everything is done.
}
यह काम करता है क्योंकि JavaScript निष्पादन में तुल्यकालिक है (जब तक मजदूरों इस्तेमाल किया जा रहा है, लेकिन है कि इस विशेष मुद्दे से संबंधित न हो)। कोड का पहला बिट चलाएगा, फिर AJAX कॉल ब्राउज़र को XHR अनुरोध शुरू करने के लिए बताएगा, लेकिन someFunction
समाप्त नहीं हुआ है, इसलिए यह सिंक्रनाइज़ निष्पादित करना जारी रखेगा।
एक बार someFunction
किया जाता है, तो नियंत्रण प्रवाह किसी भी एसिंक्रोनस घटनाओं के लिए खोला जाएगा, अंततः done
कॉलबैक की ओर जाता है।
निष्पक्ष होने के लिए, अधिकांश लोगों के लिए अपने सिर को लपेटने के लिए असीमित घटना-उन्मुख प्रोग्रामिंग आसान नहीं है। ट्रैक को खोना आसान है कि किस समय क्या कोड होना चाहिए।
यहाँ कैसे अतुल्यकालिक व्यवहार में काम करता है के एक सहज निष्पादन योग्य उदाहरण है:
(function() {
alert(1);
setTimeout(function() {
alert(2);
}, 0); //note the 0ms delay
alert(3);
}());
अलर्ट के आदेश 1
, 3
, 2
हो जाएगा। setTimeout
अपने कॉलबैक को समकालिक रूप से कॉल नहीं करेगा क्योंकि यह निर्दिष्ट समय की प्रतीक्षा करने के लिए निश्चित समय की प्रतीक्षा करने पर निर्भर करता है, इसलिए यदि कोई समय समाप्त नहीं होने वाला है, तो भी इसे जारी रखने से पहले वर्तमान फ़ंक्शन को समाप्त करना होगा।
क्या आपने दस्तावेज़ पढ़ने की कोशिश की ?? आपके सभी मामलों के लिए स्पष्टीकरण हैं http://api.jquery.com/jQuery।ajax/ – charlietfl