setTimeout()
を使うと、指定した時間に関数を起動することができます。
setTimeout(function, 60000);
しかし、関数を複数回起動したい場合はどうなりますか?時間間隔が経過するたびに、私は機能を実行したいと思います(60秒ごとに、言おう)。
timer
内のコードがあなたのインターバルより長くかかるかもしれないかどうかを気にしないのであれば、setInterval()
を使用してください。
setInterval(function, delay)
これは最初のパラメータとして渡された関数を繰り返し起動します。
もっと良い方法はsetTimeout
をself-executing anonymous
関数と一緒に使うことです:
(function(){
// do some stuff
setTimeout(arguments.callee, 60000);
})();
それはあなたのコードが実行される前に次の呼び出しが行われないことを保証します。この例では、関数参照としてarguments.callee
を使用しました。 arguments.callee
はecmascript 5では推奨されていないため、関数に名前を付けてsetTimeout
内で呼び出すのがより良い方法です。
使用
setInterval(function, 60000);
編集:(あなたがそれが起動した後にクロックを停止したい場合)
スクリプトセクション
<script>
var int=self.setInterval(function, 60000);
</script>
とHTMLコード
<!-- Stop Button -->
<a href="#" onclick="window.clearInterval(int);return false;">Stop</a>
jAndy の 答えinterval
秒ごとにポーリングし、timeout
秒後に終了するポーリング関数を実装します。
function pollFunc(fn, timeout, interval) {
var startTime = (new Date()).getTime();
interval = interval || 1000;
(function p() {
fn();
if (((new Date).getTime() - startTime ) <= timeout) {
setTimeout(p, interval);
}
})();
}
pollFunc(sendHeartBeat, 60000, 1000);
UPDATE
コメント通り、渡された関数がポーリングを停止できるようにそれを更新します。
function pollFunc(fn, timeout, interval) {
var startTime = (new Date()).getTime();
interval = interval || 1000,
canPoll = true;
(function p() {
canPoll = ((new Date).getTime() - startTime ) <= timeout;
if (!fn() && canPoll) { // ensures the function exucutes
setTimeout(p, interval);
}
})();
}
pollFunc(sendHeartBeat, 60000, 1000);
function sendHeartBeat(params) {
...
...
if (receivedData) {
// no need to execute further
return true; // or false, change the IIFE inside condition accordingly.
}
}
JQueryでは、このようにすることができます。
function random_no(){
var ran=Math.random();
jQuery('#random_no_container').html(ran);
}
window.setInterval(function(){
/// call your function here
random_no();
}, 6000); // Change Interval here to test. For eg: 5000 for 5 sec
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="random_no_container">
Hello. Here you can see random numbers after every 6 sec
</div>
setInterval(fn,time)
あなたがやっている方法です。
関数の終わりにsetTimeoutを呼び出すだけです。これにより、イベントキューに再度追加されます。遅延値を変更するために任意の種類のロジックを使用できます。例えば、
function multiStep() {
// do some work here
blah_blah_whatever();
var newtime = 60000;
if (!requestStop) {
setTimeout(multiStep, newtime);
}
}
window.setInterval(func, time)
を使用してください。
// example:
// checkEach(1000, () => {
// if(!canIDoWorkNow()) {
// return true // try again after 1 second
// }
//
// doWork()
// })
export function checkEach(milliseconds, fn) {
const timer = setInterval(
() => {
try {
const retry = fn()
if (retry !== true) {
clearInterval(timer)
}
} catch (e) {
clearInterval(timer)
throw e
}
},
milliseconds
)
}
電話をかける方法は2つあります。
setInterval(function (){ functionName();}, 60000);
setInterval(functionName, 60000);
上記の関数は60秒ごとに呼び出します。
ここでは、setInterval()を使用して、自然数0から...... n(次の数は60秒ごとにコンソールに表示されます)にコンソールします。
var count = 0;
function abc(){
count ++;
console.log(count);
}
setInterval(abc,60*1000);