javascript愛好家には、
分ごとに発砲するようにsetTimeOut
(または)ハンドルをどのようにプログラムしますか?setInterval
たとえば、現在の時刻の51秒の場合は、9秒で発射し、14秒の場合は、46秒で発射します。
ありがとう
javascript愛好家には、
分ごとに発砲するようにsetTimeOut
(または)ハンドルをどのようにプログラムしますか?setInterval
たとえば、現在の時刻の51秒の場合は、9秒で発射し、14秒の場合は、46秒で発射します。
ありがとう
var date = new Date();
setTimeout(function() {
setInterval(myFunction, 60000);
myFunction();
}, (60 - date.getSeconds()) * 1000);
明らかに、これは 100% 正確ではありませんが、ほとんどの場合、これで十分なはずです。
var nextTick = function() {
return 60000 - (new Date().getTime() % 60000);
}, timerFunction = function() {
// do stuff
// do stuff
// do stuff
setTimeout(timerFunction, nextTick());
};
var timeout = setTimeout(timerFunction, nextTick());
var seconds = (new Date()).getSeconds();
60-seconds
タイムアウト時間として使用します。確かに、setTimeout
ミリ秒を指定できます。つまり、ミリ秒もチェックする必要がありますが、これにより、ほとんどのアプリケーションで「十分に近い」結果が得られます。どちらかといえば、これにより分をオーバーシュートする必要がありますが、アンダーシュートするよりもオーバーシュートする方が適切です。この方法では、アンダーシュートは壊滅的な障害を引き起こします。
var d = new Date();
var milisecondsUntilMinuteChanges = 60000 - d.getMilliseconds() - (1000 * d.getSeconds());
function waitForNewMinute() {
if (new Date().getSeconds()>1) {
setTimeout(waitForNewMinute, 500);
} else {
setInterval(doMyThing,60000);
}
}
waitForNewMinute();