2012-12-22 17 views
10
function tryToDownload(url) 
{ 

     oIFrm = document.getElementById('myIFrm'); 
     oIFrm.src = url; 
     // alert(url); 
     // url=escape(url); 

     setTimeout(deletefile(url), 25000); 
} 

निम्नलिखित deletfile समारोहक्यों सेटटाइम फ़ंक्शन निष्पादन में देरी नहीं करता है?

function deletefile(url){ 

$.ajax({ 
    type:'post', 
    url: "<%= addToDoDeleteDownloadFile %>", 
    data:{filename:url}, 
    type : "GET", 
    timeout : 20000, 
    dataType : "text", 
    success : function(data) { 
     alert("success"); 

    } 
    }); 
} 

है ऊपर मेरी jQuery और im 25 सेकंड के बाद अंत में एक समारोह बुला, लेकिन यह कुछ कैसे deletefile (यूआरएल) समारोह में देरी और बस after.So पर अमल नहीं कर रहा है समस्या क्या होनी चाहिए?

+0

संभव डुप्लिकेट (http://stackoverflow.com/questions/4128938/javascript-settimeout) – Fraser

+1

@Fraser: यह वास्तव में नहीं है एक डुप्लिकेट आईएमएचओ। – Matt

उत्तर

19

इस पंक्ति में आप अपने फ़ंक्शन को कॉल और उसके परिणामsetTimeout() को पारित कर रहे हैं।

setTimeout(deletefile(url), 25000); 

आप निष्पादन में देरी करना चाहते हैं, एक आवरण समारोह जोड़ें:

setTimeout(function(){ deletefile(url); }, 25000); 

संपादित

एक वैकल्पिक @Petah द्वारा प्रस्तावित:

setTimeout(deletefile, 25000, url); 

सभी मापदंडों देरी के बाद setTimeout() पर पारित किया जाएगा, होगा निष्पादन पर समारोह में पारित किया गया। तो इस मामले में, आप संदर्भ फ़ंक्शन, देरी और उस क्रम में फ़ंक्शन के पैरामीटर को पास करते हैं!

ध्यान दें कि MDN के अनुसार पैरामीटर पास करने का यह तरीका IE9 से पहले IE में काम नहीं करेगा।

+0

@ भाविक काम: अगर आपके पास 'foo (deletefile (url)) था, तो वह तुरंत' deletefile' 'को कॉल करेगा और इसके वापसी मान को' foo' में पास करेगा, है ना? सरको ने कहा, तो यह 'सेटटाइमआउट' के साथ बिल्कुल वही है। –

+2

या .... 'setTimeout (deletefile, 25000, url) ' – Petah

+0

@Petah, फ़ंक्शन में अतिरिक्त पैरामीटर पास करने से इंटरनेट एक्सप्लोरर –

3

ऐसा इसलिए है क्योंकि आप फ़ंक्शन को कॉल कर रहे हैं, और सेटटाइमआउट कॉल में वापसी मान का उपयोग कर रहे हैं। एक गुमनाम समारोह में लपेट इतना है कि यह setTimeout द्वारा कहा जाता है:

function tryToDownload(url) { 

    oIFrm = document.getElementById('myIFrm'); 
    oIFrm.src = url; 
    // alert(url); 
    // url=escape(url); 

    setTimeout(function() { deletefile(url); }, 25000); 

} 
[जावास्क्रिप्ट setTimeout] की
+0

thnx आदमी ... यह काम किया –

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