Дождитесь, пока запрос XHR вернет 200 и повторит цикл

#javascript #loops #xmlhttprequest #chat

#javascript #циклы #xmlhttprequest #Чат

Вопрос:

это мой первый пост здесь. Я уже некоторое время пишу сценарий чата, но столкнулся с проблемой. Когда я использую свой исходный код, браузер зависает, потому что он все еще пытается загрузиться. Я перепробовал почти все. Я немного в тупике, потому что у меня была идея клонировать функцию для перехода туда и обратно, и она ВСЕ РАВНО не будет работать. Вот фрагмент того, с чем я работаю.

 function jumpanti(){
    if (window.XMLHttpRequest)
        {// code for IE7 , Firefox, Chrome, Opera, Safari, SeaMonkey
            xmlhttp=new XMLHttpRequest();
        }
        else
        {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 amp;amp; xmlhttp.status==200)
            {
                
     
   
            
                document.getElementById("chatContent").innerHTML = xmlhttp.responseText;
                antifreeze();
                
                
        
                
            }
        }
        xmlhttp.open("GET", "innerchat.php", false);
        xmlhttp.send();
        twemoji.parse(document.body);
        // Twemoji parse
        
        
}



function antifreeze(){
    if (window.XMLHttpRequest)
        {// code for IE7 , Firefox, Chrome, Opera, Safari, SeaMonkey
            xmlhttp=new XMLHttpRequest();
        }
        else
        {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 amp;amp; xmlhttp.status==200)
            {
                
     
   
            
                document.getElementById("chatContent").innerHTML = xmlhttp.responseText;
                jumpanti();
                
                
        
                
            }
        }
        xmlhttp.open("GET", "innerchat.php", false);
        xmlhttp.send();
        twemoji.parse(document.body);
        // Twemoji parse
        
        
}
 

Я пробовал, и это все равно не сработает. Я хочу, чтобы мой код пытался загружать чат, пока он не получит ответ 200, а затем цикл. У кого-нибудь есть какие-либо решения для этого, используя только XHR?

Комментарии:

1. Чаще всего приложения для чатов пишутся с помощью веб-сокетов, чем с помощью xhr. Проверьте medium.com/@noufel.gouirhate / … Кроме того, вам действительно нужно поддерживать IE5 и IE6? Держу пари, что ты этого не делаешь. 🙂

Ответ №1:

Я исправил проблему. Проблема заключалась в том, что у меня не был включен асинхронный XML внутри функции. Это сильно заморозило страницу. Я изменил xmlhttp.open("GET", "innerchat.php", false); на xmlhttp.open("GET", "innerchat.php", true);