我是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功能完成。
如何正确设置此功能的延迟?
答案 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);
}
});
}