(उपेक्षा कर कि code2 कार्यान्वित करना वेबवर्कर्स) जावास्क्रिप्ट एक थ्रेड पर चलता है, इसलिए आप सुनिश्चित कर सकते हैं कि कोड 2 कोड 1 के बाद हमेशा निष्पादित होगा।
जब तक आपकी code1 एक अजाक्स कॉल या एक setTimeout()
, जिस स्थिति में ट्रिगर क्लिक हैंडलर पूरा हो जाएगा की तरह कुछ अतुल्यकालिक करता है, तो code2 अजाक्स कॉल से निष्पादित करेंगे, तो (अंततः) कॉलबैक (या setTimeout()
, या जो कुछ भी चलेंगे)
संपादित करें: अपने अपडेट किए गए सवाल, code2 हमेशा की तरह, code1 से पहले निष्पादित करेंगे क्योंकि जैसा कि मैंने एक async ऊपर कहा अजाक्स कॉलबैक बाद में क्या होगा के लिए (भले ही अजाक्स प्रतिक्रिया बहुत तेजी से है, यह कॉलबैक जब तक फोन नहीं होगा वर्तमान जेएस खत्म)।
का उपयोग .click()
कोई पैरामीटर वाला .trigger("click")
के लिए एक शॉर्टकट है "मैं कैसे यकीन है कि के बाद code1 निष्पादित करता है कि code2 कार्यान्वित करना", लेकिन अगर आप वास्तव में .trigger()
फोन स्पष्ट रूप से आप अतिरिक्त पैरामीटर प्रदान कर सकते हैं कि हैंडलर को पास कर दिया जाएगा, जो आपको यह करने देता है:
$(".elem").click(function(e, callback) {
$.post("page.php".function(){
//code1
if (typeof callback === "function")
callback();
});
});
$(".elem").trigger("click", function() {
// code 2 here
});
क्लिक करें हैंडलर परीक्षण के भीतर क्या callback
पैरामीटर में कोई फ़ंक्शन पारित किया गया है और यदि ऐसा है तो इसे कॉल करें। इसका मतलब यह है कि जब घटना "स्वाभाविक रूप से" होती है तो कोई कॉलबैक नहीं होगा, लेकिन जब आप इसे प्रोग्रामेटिक रूप से ट्रिगर करते हैं और फ़ंक्शन पास करते हैं तो वह फ़ंक्शन निष्पादित किया जाएगा। (ध्यान दें कि .trigger()
के साथ आपके द्वारा पारित पैरामीटर को कोई फ़ंक्शन नहीं होना चाहिए, यह किसी भी प्रकार का डेटा हो सकता है और आप एक से अधिक पैरामीटर पास कर सकते हैं, लेकिन इस उद्देश्य के लिए हम एक फ़ंक्शन चाहते हैं। अधिक जानकारी के लिए .trigger()
doco देखें।)
डेमो: http://jsfiddle.net/nnnnnn/ZbRJ7/1/
कृपया परिभाषित करें कि "कोड 1 निष्पादन" से आपका क्या मतलब है। आपके कोड में AJAX विधि है। तो क्या आपका मतलब है जब AJAX कॉल निष्पादित करता है या AJAX निष्पादित करता है और पूरा करता है? – Rahatur