2016-01-03 8 views
5

में मैं दो पंक्तियों के साथ एक समारोह है और मैं उन्हें क्रम में क्रियान्वित किया जा करना चाहते हैं। समारोह है:2 जावास्क्रिप्ट कार्यों को निष्पादित आदेश

showNotification(message){ 
    $("#notificationMessageBody").html(message); // line1 
    $("#notificationModal").modal('show');  //line2 
} 

तो, जब भी मैं showNotification("Hello World!") मूल रूप से कहते हैं कि कैसे मैं सुनिश्चित करते हैं line1 निष्पादित किया जाता है इससे पहले कि line2 (जिसका अर्थ है सामग्री लोड मोडल चलाता से पहले किया जाता है) , मैं मॉडल में मेरा संदेश को भरने के लिए कोशिश कर रहा हूँ शरीर और फिर इसे भरने से पहले, इसे दिखाएं।

--EDIT--

कार्यों वास्तव में एक के बाद एक को क्रियान्वित कर रहे हैं, लेकिन इससे पहले कि मेरे jQuery मोडल पॉप लोड करता है मेरी मेरी #notificationMessageBody

नतीजतन में message, उदाहरण के लिए: यदि मैं फोन showNotification("Hello") मुझे "हैलो" (मोडल की व्यवस्था और सामान की व्यवस्था) के साथ एक मॉडल मिलता है, लेकिन उसके बाद यदि मैं showNotification("World") कॉल करता हूं तो मॉडल "हैलो" के साथ पहले दिखाई देता है, उसके बाद यह "विश्व" में बदल जाता है।

नोट: "नमस्ते" और "दुनिया", पाठ के बड़े कबाड़ हैं, इसलिए लोड हो रहा है कि मेरे DIV में कुछ समय लग रहा है किया जाना चाहिए, मेरा मानना ​​है कि। भले ही उन्हें एक के बाद एक निष्पादित किया गया हो, यह प्रतीत होता है (आम-एआर) कि पहले मोडल पॉपिंग हो रहा है और फिर प्रतिस्थापन किया जाता है। मुझे उम्मीद है कि तस्वीर अब थोड़ा स्पष्ट है।

कोई AJAX कहीं भी यहां समारोह के आसपास शामिल किया गया। असल में, यह मेरा कस्टम अलर्ट() फ़ंक्शन है जो कोई कह सकता है। मेरे पृष्ठ में उचित आईडी वाला एक मॉडल है। मैं मोडल-बॉडी सामग्री बदलता हूं (jQuery के .html() फ़ंक्शन के साथ) और कोड से दिखाई देने के लिए मोडल को ट्रिगर करें।

+0

का प्रयोग करें। 'FirstStatement; setTimeout (फ़ंक्शन() {secondStatment;}, 0); ' – Tushar

+1

वे विधियां तुल्यकालिक हैं इसलिए यदि यह सही तरीके से काम नहीं कर रही है, तो आपने समस्या का गलत निदान किया है। क्या मोडल में खुलने पर सही सामग्री नहीं होती है? – JJJ

+2

कृपया डेमो प्रदान करें जो उन्हें क्रम में निष्पादित नहीं कर रहा है। यह एक एक्सवाई समस्या की तरह लगता है। यह भी दिखाएं कि आप इस फ़ंक्शन को कैसे कॉल करते हैं। यदि यह किसी अजाक्स अनुरोध से संबंधित है तो समस्या यह है कि आप इसे – charlietfl

उत्तर

3

आप यह सुनिश्चित करने के लिए पहली पूर्ण होने के बाद एक दूसरे के निष्पादित होने .promise() विधि (jQuery 1.6 में जोड़ा) का उपयोग कर सकते हैं: `setTimeout`

$("#notificationMessageBody").html(message).promise().done(function() { 
    $("#notificationModal").modal('show'); 
}); 
संबंधित मुद्दे