2016-07-07 3 views
0

本当に助けが必要です。私は別の部屋とチャットをしています。ユーザーがROOM BUTTONをクリックすると、その部屋のメッセージが表示され、2秒ごとにSetINTERVALが更新されます。"setInterval"を停止し、同じ機能で他のものを起動する方法

EXAMPELEのCODE:

var abc = setInterval(function() 
    { 
     $.ajax({ 
      type:"post", 
      url:"logs.php?user_profil=<?php echo $user_profil;?>&user=<?php echo $user;?>", 
      datatype:"html", 
      success:function(data) 
      { 
      $("#chatlogs").html(data); 
      } 
     }); 
    }, 2000); 

問題は、他のROOMボタンをクリックするハイテクがチャットが重なった場合ということです。 どうすれば停止できますか?

VAR ABCもう一度値を変えて起動しますか?

HERE IS A EXAMPLE(this is just a example page):

+1

私は、以下の答えを入れていますが、真剣に、この目的のためにWebSocketをを考慮すべきである – aximus

答えて

0
var myMethod = function() { 
    $.ajax({ 
     type: "post", 
     url: "logs.php?user_profil=<?php echo $user_profil;?>&user=<?php echo $user;?>", 
     datatype: "html", 
     success: function(data) { 
     $("#chatlogs").html(data); 
     } 
    }); 
    }, 
    abc = setInterval(myMethod, 2000); 

clearInterval(abc); 
abc = setInterval(myMethod, 2000); 

解説:変数にコールバックメソッドを保存したsetIntervalため、その変数を再使用します。

+1

タイマーをキャンセルする正しい方法は、 'てclearInterval(ABC)を'使用することです。 – Phylogenesis

+0

@Phylogenesisあなたは正しいです、訂正されました – aximus

0

abc変数は、ちょうどその特定のインターバルのIDを保持し、どのように私は、VARのABCを停止することができますし、異なる値ところで

で再起動します。あなたは本当に必要はありませんし、もう一度開始するには もう1人はです:)。

私はこのようにそれを行うだろう:

var getRoomUpdater = (function(){ 
    var _userProfileId; 
    var updater = function() { 
     $.ajax({ 
      type: "post", 
      url: "logs.php?user_profil=" + _userProfileId + "&user=<?php echo $user;?>", 
      datatype: "html", 
      success: function(data) { 
       $("#chatlogs").html(data); 
      } 
     }); 
    } 
    return function(userProfileId){ 
     _userProfileId = userProfileId; 
     return updater; 
    }; 
})(); 

// it will hold interval id 
var abc; 


// Opening a room: 
var openRoom = function(roomId){ 
    // start automatic update 
    clearInterval(abc); 
    abc = setInterval(getRoomUpdater(roomId)); 


    // + other actions if needed 
} 
関連する問題