持续特定时间的功能

时间:2015-04-28 22:47:37

标签: javascript jquery

所以这是一个奇怪的问题

我正在开展一个项目,我需要使用javascript保持一段时间,例如将信息发送到其他页面

但是,我不希望这行代码执行直到Midnight

伪代码 如果(午夜){ 做这个 }

这是我能解释我想要做的最简单的方法,我知道setInterval只用毫秒而且非常困难(对我而言)让它每天早上12点(午夜)运行

任何建议&建议会很棒,谢谢!

3 个答案:

答案 0 :(得分:0)

解决方案是启动一个将在午夜结束的过程(即返回true)。当你触发doThis()过程时。您熟悉JavaScript Promise吗?您可以从this页面获取时间的想法。

答案 1 :(得分:0)

您可以使用每晚午夜运行的内容:

var a = new Date();
a.setHours(24);
setTimeout(function () {
    function atMidnight () {
        alert('It\'s midnight');
    }

    atMidnight();
    setInterval(function () {
        atMidnight();
    }, 86400000);//86400000 is ms in a day

}, (a.getTime()-new Date().getTime()));

答案 2 :(得分:0)

function getTimeLeftTill(targetTime){
    var time = new Date();
    var ms = (time.getSeconds() + (time.getMinutes() + time.getHours() * 60 ) * 60) * 1000
    return targetTime > ms ? targetTime - ms : 24 - (ms - targetTime);
}

function runAtMidnight(cb){
    var midnightMS = 24* 60 * 60 * 1000; //Midnight or whenever, e.g for midday its 12 * 60 * 60 * 1000
    var timeLeft = getTimeLeftTill(midnightMS);
    setTimeout(function(){
        cb();
    }, timeLeft);
}

/*
 * Example
 */

runAtMidnight( function(){
    alert('it\'s midnight!');
} )