2015-10-20 229 views
1

我已經在click事件上調用了我的下面的函數。 基本上這段代碼需要一些時間(大約200ms)在瀏覽器上執行,因爲我正在觸發jquery樹上的單擊事件。Javascript代碼執行延遲

function showAsset() 
{ 
     $(".err").html("Please wait . . .") 
     $(".err").css('display','block') 
     $(".err").css('background','orange') 
     v=$("#asset_details").val() 
     v=v.split("###") 
     v1=v[0].split("-") 
//Upto this block should be executed first 

     //Jquery Tree block starts 
     $("#navigation ."+v1+" div").click() 
     $("#navigation ."+v[1]+" div").click() 
     $("#navigation table tr:contains('"+v[0]+"')").css({'background':'#FFF82A'}) 
     $('html, body').animate({ 
     'scrollTop' :($("#navigation table tr:contains('"+v[0]+"')").position().top-5) 
    }); 
     //Jquery Tree block ends 
} 

因此,爲了指導我的用戶瞭解這種負載情況,我正在顯示「請稍等......」在函數調用開始時的消息。 但是,在完成函數調用之後,會顯示此消息。

我的問題是爲什麼我調用這個函數時塊的開始也會延遲。 我把Jquery Tree塊放在函數的底部。但是整體代碼同時執行。

有什麼辦法可以分開這個執行。

回答

1

您可以使用setTimeout分隔您的執行。

調用函數或在指定的延遲後執行代碼片段。

source

被執行,而不setTimeout的第一塊和setTimeout之後在單獨的範圍被執行。

function showAsset() { 
    $(".err").html("Please wait . . .") 
    $(".err").css('display', 'block') 
    $(".err").css('background', 'orange') 
    v = $("#asset_details").val() 
    v = v.split("###") 
    v1 = v[0].split("-") 
    //Upto this block should be executed first 

    //Jquery Tree block starts 

    setTimeout(function() { 
    $("#navigation ." + v1 + " div").click() 
    $("#navigation ." + v[1] + " div").click() 
    $("#navigation table tr:contains('" + v[0] + "')").css({ 
     'background': '#FFF82A' 
    }) 
    $('html, body').animate({ 
     'scrollTop': ($("#navigation table tr:contains('" + v[0] + "')").position().top - 5) 
    }); 
    //Jquery Tree block ends 
    }, 0); 
} 
+0

它給我看工作。將間隔增加到80,因爲0具有相同的結果 – ManiMuthuPandi