每个月每天延迟1小时执行Javascript

时间:2019-09-11 18:14:58

标签: javascript google-chrome-extension

最后一次编辑(希望):提出了一个更大的问题,如果有人可以回答“为什么下面的代码中的sleep函数不能在执行中提供一个小时的暂停?”。对此有更好的了解可能会有所帮助。

我想触发一个以chrome扩展程序运行的js函数,该函数将连续连续运行1个月,但在8:15 am至9:15 am之间将其执行暂停1小时。

这是我正在尝试的方法,但是没有发生来自sleep()的延迟。

function(){ //triggered on button press, one verrryyyyyyy long process
    function sleep(miliseconds) {
        var currentTime = new Date().getTime();
        while (currentTime + miliseconds >= new Date().getTime()) {
        }
     }

    var data_array = ["fake_data1", "fake_data2", /*...*/ "fake_data923421"];
    for (let i=0; i<data_array.length; i++){
        var today = new Date();
        var hours = today.getHours();
        var minutes = today.getMinutes();
        if(hours >= 8 && minutes >= 15){
            sleep(3600000);
        }
        //do things if it's not 8:15-9:15am
        setTimeout(function() {
            //things here happen as expected with setTimeout delay
            //so far haven't been able to use setTimeout sometimes, but not every time
            //hence the sleep() function (also from SO, sorry no credits posted)
        }, (i+1)*10000);
    }
});

免责声明:  -对实现此目标的替代方法非常开放。  -有充分的理由将其用JS编写并连续运行一个月。  -没有用户会在页面上/锁定用户界面无关

奖励积分-这是chrome扩展名,如果有一种方法,我可以将数据不存储在数组中,并在处理完每个值后将其标记出来,因此,如果必须停止此操作,则不会重新执行强制脚本返回“ fake_data1”-太好了。我知道我可以将其存储在数据库中,制作自己的Web服务,然后调用它来做到这一点。不过,宁愿避免这种情况,而是要寻找快速而又容易的方法,因为这很可能是一次性的,非生产的,永远不会再次使用的代码。

1 个答案:

答案 0 :(得分:0)

这对于可能会有所帮助的人...我仍然不明白为什么上面的sleep函数对我不起作用,但是我使用了do-while循环对其进行了修改,并且它按预期运行。

function sleep(miliseconds) {
   var d = new Date();
   var d2 = null;
   do { d2 = new Date(); }
   while(d2-d < miliseconds);
}