如何暂停然后返回 setInterval



我正在修复公司正在开发的聊天中的一些错误。目前发生的事情是聊天窗口中加载的消息不属于所选聊天。DB 和 Java 方法中的查询是正确的。

由于使用了 setInterval((,我相信当我选择不同的聊天时,如果 setInterval 方法已经被触发,消息加载不正确。

有没有办法仅在加载消息并在单击另一个聊天时暂停后触发 setInterval?

我想更新的方法:PS:如果没有设置间隔,它不会显示传入的消息。只需再次单击聊天即可。

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

                            });                         
                    }                   

首先,请将您的问题移至葡萄牙语 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变量。值false将执行clearInterval条件,true将执行setInterval条件。

用:

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

相关内容

最新更新