私はこのコードで問題なく動作しますが、ユーザーが連続ループではなく、たとえば5回の反復後に非アクティブ(マウスの移動なし)の場合は、ポーリングとclearIntervalを停止したいと思います。
var i, active = new Date, iter = 1;
$(window).on('mousemove', function(e){
active = new Date;
});
i = setInterval(function(){
if(new Date().getTime() - active.getTime() < 1000){
console.log("sending active event to server.....");
iter = 1;
else{
iter++;
if(iter >= 5){
clearInterval(i);
}
}
}, 2000);
現在、この例では2秒ごとにチェックしています。アクティブな日付を5回確認したいのですが、5回続けて期限切れになった場合は、clearInterval(i)...を呼び出します。したがって、mousemoveコールバック内の何かが、現在実行されていない場合にのみsetIntervalを再初期化する必要があります。どうすればこれを達成できますか?ヒントとサンプルをありがとう。可能であれば匿名関数を使い続けたいです。