2017-11-17 15 views
-5

私はこの会社の開発中のチャットでいくつかのエラーを修正しています。現在、チャットウィンドウに読み込まれたメッセージは、選択したチャットに属していません。 DBおよびJavaメソッドのクエリは正しいです。一時停止してから、setIntervalを返す方法

setInterval()が使用されているので、私は別のチャットを選択すると、setIntervalメソッドが既に起動されていると、メッセージが正しく読み込まれないと思います。

他のチャットをクリックしたときにメッセージを読み込んだ後に一時停止するだけで、setIntervalをトリガする方法はありますか?

方法更新したい: PS:setIntervalがなければ、受信メッセージは表示されません。チャットをもう一度クリックするだけです。

function atualizarChat(idChat,nomeChat) 
        { 
         // Parametros 
          var dados = "Token=" + encodeURIComponent(token); 
          if(idMensagemUltima != 0){ 
           dados += "&idChatMensagem="+encodeURIComponent(idMensagemUltima); 
          }       
          dados += "&idChat="+encodeURIComponent(idChat); 

          $.ajax({ 
           type : "POST", 
           url : "/ListarMensagensServlet", 
           data : dados, 
           dataType : "json", 
           success : function(resultado) { 

           idChatEscolhido = idChat; 

            // Troca nome do chat 
            if(nomeChat != ''){ 
             $('#NomeUsuarioChat').text(nomeChat); 
            } 

            var mensagemAntiga = idMensagemUltima; 

            // Adiciona as mensagens na tabela 
            for(mensagem of resultado){     

             if(mensagem['bool'] == 1){ 
              mostrarSuaMensagem(mensagem['mensagem']); 
             } 
             else{ 
              mostrarRespostaMensagem(mensagem['mensagem']); 
             } 
             // troca data da ultima mensagem 
             idMensagemUltima = mensagem['idChatMensagem']; 
            } 

            if(idMensagemUltima > mensagemAntiga){ 
             // Joga chat para baixo 
             $('#CaixaDeChat').stop().animate({ 
              scrollTop: $('#CaixaDeChat')[0].scrollHeight 
             }, 800); 
            }       
           } 


          });       
        }     
+6

https://pt.stackoverflow.com/ – juvian

+0

を、ここの人々は世界中からであり、あなたは、あなたの特定のコミュニティにあなたの助けを制限しています:)。 –

+0

ありがとう、私は編集しました。 – rleteixeira

答えて

0

まず、質問をポルトガル語StackOverflow(pt.stackoverflow.com)に移動してください。 ソリューションについて

この動作を処理するための小さな関数を作成することをお勧めします。setIntervalを作成し、その値を変数に設定するだけです。

var interval = null; 

var intervalHandler = function(status, yourFunction, intervalTime) { 
    if(status) { 
    interval = setInterval(yourFunction, intervalTime); 
    } 
    else { 
    clearInterval(interval); 
    } 
} 

ので、statusは値true/falseboolean変数です。値falseclearIntervalの条件を実行し、truesetIntervalの条件を実行します。

使用:あなたは英語であなたの問題を投稿する必要があり

intervalHandler(true, yourFunction, 1000); // for set 

intervalHandler(false); // for clear 
+0

ありがとうございます。このソリューションでは、問題は解決されました。 – rleteixeira

+0

よろしくお願いします! @rleteixeira – WillianLKeller

関連する問題