2016-11-21 6 views
0

私はJavaScriptをかなり使い慣れています。私はDaniel Shiffmanのp5とビデオを通してそれを学んでいます。JavaScript - n秒おきに何かする

私は天気予報をチェックするプログラムを毎分更新する方法を探していたので、自分でページを更新する必要はありません。

私はすでにこの質問に答えていることを知っていますが、私はJSにとってとても新しいので、私には意味がありません。

ELI5(「私は5つのように説明してください」)の説明に答えることができれば、それは素晴らしいことです。

+1

Javascriptのタイマーがここに完璧な選択だろう... ')のsetIntervalチェックし – Geeky

+4

のsetTimeoutます(setTimeoutを'上に読みましたと 'setInterval()'? – Pointy

+0

[* MDN:JavaScriptタイマー*](https://developer.mozilla.org/en-US/Add-ons/Code_snippets/Timers)を参照してください。 – RobG

答えて

6

setInterval()は、最も簡単なオプションです。

この単純な例を見てみましょう:

// Will execute myCallback every 0.5 seconds 
var intervalID = window.setInterval(myCallback, 500); 

function myCallback() { 
// Your code here 
} 

詳細とより多くの例がここで見つけることができます:https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setIntervalhttps://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval

+0

助けてくれてありがとう! –

0

プレーンバニラJavaScriptでは、あなたが使用したsetInterval:

var intervalID = window.setInterval(checkWeatherAPI, 60000); 

function checkWeatherAPI() { 
    // go check API 
    console.log("checking weather API"); 
} 

上記を実行する場合は、コールバック関数checkWeatherAPIが1分に1回実行されるか、60,000ミリ秒あなたは、単にこの行を実行します間隔を停止するWindwTimers.setInterval

:永遠econds、ここでは完全なドキュメント

window.clearInterval(intervalID); 
0

以下の違いについて少し説明したようにsetInterval OR setTimeoutがあなたの必要性と要件に基づいているかどうかを選択します。

setIntervalは、APIの所要時間に関係なく呼び出されます。 5秒ごとにAPI呼び出しを設定し、ネットワーク待ち時間またはサーバーの待ち時間のためにAPI呼び出しが6秒かかるインスタンスでは、setIntervalは、最初のAPIが完了する前に2番目のAPI呼び出しをトリガーします。あなたが最初のAPI呼び出しが完了したら、5秒後に別のAPI呼び出しをトリガーにしたい場合は

var timer = setInterval(callAPI, 5000); 

function callAPI() { 
    // TO DO 
    triggerXhrRequest(function(success){ 

    }); 
} 

代わりに、あなたはより良い以下のようにsetTimeoutを使用することができます。

var timer = setTimeout(callAPI, 5000); 

function callAPI() { 
    // TO DO 
    triggerXhrRequest(function(success){ 
     timer = setTimeout(callAPI, 5000); 
    }); 
} 

setTimeoutn番目秒後に一度呼び出されます。したがって、あなたは上記のように次のものを呼び出すことができるときを制御できます。

MDNドキュメント

setTimeout

setInterval

0
function doThings() { 
    //the things i want to happen (or increment) 
} 

setTimeout(function() { 
    doThings(); 
}, 1000);//milliseconds 
関連する問題