2016-07-07 2 views
0

Мне действительно нужна ваша помощь. У меня есть чат с разными комнатами. Когда пользователь нажимает на КНОПКУ КОМНАТЫ, появляются сообщения, которые есть в этой комнате, и обновляется с помощью SetINTERVAL каждые 2 секунды.Как остановить «setInterval» и запустить другой с тем же FUNCTION

EXAMPELE КОД:

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

Я положил на него ответ ниже, но вы должны серьезно рассмотреть вопрос о WebSockets для этой цели – 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

@ Филогенез вы правы, исправлены – aximus

0

, как я могу остановить ВАР ABC и запустить его снова с различными значениями

Кстати, переменная abc только имеет идентификатор этого конкретного интервала. Вам действительно не нужно (и вы не можете) «начать его снова», вам нужно запустить еще один один :).

Я хотел бы сделать это следующим образом:

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 
} 
Смежные вопросы