2010-10-23 12 views
9

मेरे पास एक जावास्क्रिप्ट है जो निष्पादित करने के लिए लगभग 2 सेकंड (जटिल अनुकूलन एल्गोरिदम) लेता है। मैं फ़ंक्शन की शुरुआत में कुछ कार्य "कार्य ..." पर सेट करना चाहता हूं। मैं देखता हूं कि फ़ंक्शन फ़ंक्शन के अंत तक नहीं बदलता है।लंबे समय से चलने वाले फ़ंक्शन में jQuery के साथ तत्काल डीओएम अपडेट को संशोधित करें

मैं डीओएम को प्रचार कैसे बदल सकता हूं? या क्या मैं इसे अलग-अलग एक साथ संपर्क करूँ?

मैं फ़ंक्शन को बटन पर क्लिक करके कॉल करता हूं।

समारोह है कुछ की तरह:

function optimize() { 
    $('#status').text('working...'); 
    // calculate for 2 seconds 
    $('#status').text('done!'); 
} 
+0

यह काम करना चाहिए। क्या आप गैर-कार्यशील कोड के लिए एक लिंक दे सकते हैं? – lonesomeday

उत्तर

11

एक setTimeout कॉल में लंबी चलने कोड लपेटकर का प्रयास करें:

function optimize() { 
    $('#status').text('working...'); 
    window.setTimeout(function() { 
     // calculate for 2 seconds 
     $('#status').text('done!'); 
    }, 0); 
} 

यह लंबे समय से चल रहा कोड के लिए एक नया कॉल स्टैक बलों, रीपेंट की इजाजत दी (पाठ को बदलना) नए कॉल स्टैक निष्पादन शुरू होने से पहले पूरा करने के लिए।

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