2016-07-07 9 views
0

ich brauche wirklich Ihre Hilfe. Ich unterhalte mich mit verschiedenen Räumen. Wenn der Benutzer auf einen ROOM BUTTON klickt, erscheinen die Nachrichten, die er in diesem Raum hat, und wird alle 2 Sekunden mit einem SETINTERVAL aktualisiert.So stoppen Sie einen "setInterval" und starten einen anderen mit der gleichen FUNKTION

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); 

Das Problem ist, dass, wenn hallo klickt auf einer anderen ROOM Taste, um die Chats überlappen. Wie kann ich die

VAR ABC stoppen und starten Sie es erneut mit anderen Werten?

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

+1

ich die Antwort unten setzen, aber Sie sollten ernsthaft WebSockets für diesen Zweck – aximus

Antwort

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); 

Erläuterung: die Callback-Methode in eine Variable speichern und diese Variable für setInterval wiederverwenden;

+1

Der richtige Weg, um einen Timer abzubrechen prüfen, ist 'clearInterval (abc)' zu verwenden. – Phylogenesis

+0

@Phylogenesis Sie haben Recht, korrigiert – aximus

0

wie kann ich das VAR ABC stoppen und wieder mit unterschiedlichen Werten

Durch die Art und Weise starten, die abc Variable enthalten nur id dieses bestimmten Intervall. Sie brauchen wirklich (und Sie können nicht), um es "wieder zu starten", müssen Sie ein anderes eins starten :).

Ich würde es tun, wie folgt:

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 
}