2015-10-20 188 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