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

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

     setTimeout(deletefile(url), 25000); 
} 

yukarıda benim jQuery ve im 25 saniye sonra sonunda bir işlevini çağırarak, ancak bazı nasıl DeleteFile (URL) işlevini geciktirmek değil ve sadece after.So yürütmek deletfile fonksiyonneden planlama işlevi işlev yürütmeyi geciktirmiyor? Aşağıdaki

function deletefile(url){ 

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

    } 
    }); 
} 

olduğunu sorun ne olmalı?

+0

olası yinelenen (http://stackoverflow.com/questions/4128938/javascript-settimeout) – Fraser

+1

@Fraser: Bu gerçekten değil o setTimeout tarafından denir böylece anonim bir fonksiyon içine bir kopya IMHO. – Matt

cevap

19

Bu satırda işlevinizi çağırıyorsunuz ve sonucu - setTimeout() sonucunu iletiyorsunuz.

setTimeout(deletefile(url), 25000); 

sen yerine getirilmesini geciktiremez istiyorsanız, bir sarmalayıcı işlevi ekleyin:

Alternatif @Petah önerdiği

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

EDIT:

setTimeout(deletefile, 25000, url); 

Tüm parametreler gecikmeden sonra setTimeout()'a geçti, yürütme işlevine geçti. Bu durumda, referansı referansa, gecikme ve sonra parametrenin bu sıradaki fonksiyona geçmesini sağlayabilirsiniz!

Not: MDN'a göre, bu parametre aktarma yöntemi IE9'dan önce IE'de çalışmayacaktır.

+0

@Bhavik Kama: Eğer foo (deletefile (url)) 'e sahip olsaydınız, bu“ deletefile ”i hemen çağırır ve dönüş değerini“ foo ”ya geçirir, değil mi? Yani Sirko'nun dediği gibi, 'setTimeout' ile tamamen aynı. –

+2

Veya .... 'setTimeout (deletefile, 25000, url)' – Petah

+0

@Petah, işleve ek parametreler geçirerek Internet Explorer –

3

Bu nedenle, işlevi çağırıyorsunuz ve setTimeout çağrısında geri dönüş değerini kullanıyorsunuz.

function tryToDownload(url) { 

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

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

} 
[JavaScript setTimeout] arasında
+0

thnx man ... çalıştı –

İlgili konular