如何在延迟时间后执行此JavaScript调用?

时间:2015-10-02 11:21:54

标签: javascript jquery html

我是JavaScript的新手,我必须在执行另一个先前的操作一段时间后执行操作。

所以我有这个功能:

function validaProgetti() {

     $.ajax({
           type: "POST",
           //data: {'checkedRowList' : checkedRowList},
           data: JSON.stringify(checkedRowList),
           url: "validaProgetti",
           contentType:"application/json"

        }).done(function(response) {
            $('.modal').modal('hide');
            sostituisciFrammentoJsp('outputRicerca', response);

            //alert("SUCCESS");

        }).error(function(xhr) {
            alert("ERROR");
            manageError(xhr);
        });

}

正如您可以看到 done()正文,我有这两个电话:

$('.modal').modal('hide');
sostituisciFrammentoJsp('outputRicerca', response);

我需要在3秒的延迟后执行 sostituisciFrammentoJsp()执行,以确保previoius功能完成。

如何正确设置此功能的延迟?

3 个答案:

答案 0 :(得分:6)

  

...延迟3秒后确保previoius功能完成。

让我们做得更好,实际上等待上一个功能完成:

$('.modal').modal('hide').one("hidden.bs.modal", function() {
    sostituisciFrammentoJsp('outputRicerca', response);
});

(注意我使用one,而不是on,因此处理程序在事件发生后自动移动。)

请注意,我假设您使用的是Bootstrap模式,但其他的模式"图书馆将提供类似的活动或回调。

回答您实际提出的问题,您可以在setTimeout三秒后设置回调:

$('.modal').modal('hide');
setTimeout(function() {
    sostituisciFrammentoJsp('outputRicerca', response);
}, 3000);

结尾的数字以毫秒为单位(thousanths of a second)。

答案 1 :(得分:1)

只需使用javascript setTimeout

即可
setTimeout(function(){
    // your code here
}, timeInMillis);

使用此命令将安排您通过的操作。

答案 2 :(得分:0)

选项:1

clearTimeout(window.timer);
window.timer=setTimeout(function(){ // setting the delay for each keypress
                ajaxSearchRequest($type); //runs the ajax request

        }, 3000);

选项:2

// set your delay here, 2 seconds as an example...
var my_delay = 2000;

// call your ajax function when the document is ready...
$(function() {
    callAjax();
});

// function that processes your ajax calls...
function callAjax() {
    $.ajax({
        // ajax parameters here...
        // ...
        success: function() {
            setTimeout(callAjax, my_delay);
        }
    });
}