2016-09-07 11 views
1

5秒後にこのプロセスを停止するにはどうすればよいですか?X秒後に期限切れまたはタイムアウトが発生しない

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script type="text/javascript"> 
    function changeBanner(){ 
     // my change banner code 
    } 
    window.onload = function() { setInterval(changeBanner, 100) }; 
</script> 

現在のところ、100ミリ秒ごとにバナーを変更しています。しかし、私は約5秒後にそれを停止したいと思います。

私はsetTimeoutがトリックを行うかもしれないと思った。

window.onload = function() { setTimeout(setInterval(changeBanner, 100), 5000) }; 

しかし、それは違いはありません。

+0

ワウ。誰もが迅速に対応してくれてありがとう。 – mikelovelyuk

答えて

6

約5秒後に停止したいと思います。

setIntervalによって与えられたと同じことを達成するための関数ラッパーを実装するいくつかのライブラリもありますclearInterval

var timer = setInterval(changeBanner, 100); 
setTimeout(function() { 
    clearInterval(timer) 
}, 5000); 

でそれを使用し、戻り値。それはもはや通過しないでしょう反するclearIntervalを使用して、これはしかし、50回(10 * 5秒)と呼ばれた後、永遠にchangeBannerLimited関数を呼び出すために続けること

var changeBannerLimited = _.before(50, changeBanner); 
var timer = setInterval(changeBannerLimited, 100); 

注:たとえば、underscore.jsにあなたは_.beforeを使用することができますchangeBannerへの呼び出し。サイドノートで

私はそれをよく知っているし、それがうまくフォーマットさannotated source codeを提供するため、あなたが簡単に本当に舞台裏で何が起こっているか理解することができますので、私はunderscore.jsを選びました。

+1

私はフロントエンドの開発者ではなく、これは実際のプロトタイプアプリケーションです。ですから、私はおそらくclearIntervalの答えを、感謝します。私はアンダースコアを聞いたこともありません.jsしかし、私はもっとフロントエンドをやり始めたら念頭に置くでしょう! – mikelovelyuk

3

あなたが後でそれをキャンセルできるように、変数にsetIntervalの戻り値を格納することができ:

function changeBanner(){ 
    // my change banner code 
} 
window.onload = function() { 
    var id=setInterval(changeBanner, 100); 
    window.setTimeout(function() { 
     window.clearInterval(id); 
    },5000); 
}; 
2

clearIntervalを呼び出すことができるように変数にsetInterval出力を持続。

window.onload = function() { 

    var job= setInterval(changeBanner, 100) ; 
    setTimeout(clearInterval(job), 5000) 

}; 
3

clearIntervalを使用してください。

window.onload = function() { 
    var bannerInterval = setInterval(changeBanner, 100); 
    setTimeout(function() { 
     clearInterval(bannerInterval); 
    }, 5000); 
}; 
関連する問題