我有一个非常简单的问题,我需要在固定时间30分钟后做一些事情,然后在相同的固定时间30分15秒后再做一些事情。我使用以下代码来实现它,但它似乎不起作用。
<script type="text/javascript" src="<c:url value="/resources/js/date.js" />"></script>
<script type="text/javascript" >
$(document).ready(function () {
jQuery.ajax({
url: "/wikedlynotsmart/creationTime",
success: function (data) {
var date = parseFloat(data.creationDate);
var timeCreation = new Date(date);
var timeAlert = new Date(timeCreation);
timeAlert.setMinutes(timeCreation.getMinutes() + 30);
var timeAutoSubmit = new Date(timeCreation);
timeAutoSubmit.setMinutes(timeCreation.getMinutes() + 30);
timeAutoSubmit.setSeconds(timeCreation.getSeconds() + 15);
setInterval(function () {
if (new Date() == timeAlert) {
alert("time is over");
}
if (new Date() == timeAutoSubmit) {
$('form').submit();
}
}, 1000);
},
async: false,
dataType: "json"
});
});
</script>
有人可以帮我理解我在这里做错了吗?
感谢。
编辑:“时间到了!已被编辑为”时间已结束“但仍无效。
答案 0 :(得分:2)
如果可以避免,请不要每秒计算一次。 AFAIK你也无法比较Date()
这样的对象。
计算出返回时间到现在30分钟之间的初始延迟,并等待那么久。然后再等15秒。
var create = new Date(data.creationDate).getTime() + (30 * 60 * 1000);
var now = new Date().getTime();
var delay = Math.max(0, create - now); // initial delay
setTimeout(function() {
console.log("Time's up!"); // not alert() - that blocks the UI
setTimeout(function() {
$('form').submit();
}, 15000);
}, delay);
答案 1 :(得分:0)
威尔
setTimeout('myFunction();',1800000);
不起作用?
(1,800,000是30分钟,以毫秒为单位)。