Мой проект в основном похож на фид Reddit, который обновляется в режиме реального времени. Я пытаюсь использовать AJAX для периодического опроса сервера с обновлениями по 15 элементам за раз.Опрос и цикл AJAX
Я написал цикл for, но это заставило браузер заблокировать (я угадываю слишком много XHR?).
Как я могу опросить каждый элемент в корте Reddit-esque без блокировки браузера? Каков наиболее эффективный способ сделать это?
Должен ли я использовать длинный опрос, если в течение более 100 клиентов работает веб-приложение? Или я должен выбрать интеллектуальный опрос (увеличение времени ожидания между запросами, если нет данных)?
Спасибо! Я все еще новичок в AJAX!
for (var i=0; i < id_array_len; i++) {
// Grab current reply count
var reply = $("#repl"+item_id).html();
var url= *php function here*
var ajaxRequest;
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser does not support AJAX!");
return false;
}
}
}
ajaxRequest.onreadystatechange = function(){
if (ajaxRequest.readystate == 4){
live_feed_data_tot = ajaxRequest.responseText;
if (live_feed_data_tot.trim() == "no change" || live_feed_data_tot.trim() == "no meme" || live_feed_data_tot.trim() == "no response"){
console.log("(no update)");
} else {
var live_feed_data = live_feed_data_tot.split(',');
if (live_feed_data[1] == 'reply') {
// Reply count has changed
new_reply = live_feed_data[0].trim();
// Update actual number
$("#repl"+item_id).html(new_reply);
}
}
}
}
ajaxRequest.open('POST', url, true);
ajaxRequest.send();
Покажите нам петлю. Я сделал именно это несколько раз, не блокируя браузер, поэтому я ожидаю, что это что-то в вашем коде. –
Добавлен код - помощь будет очень признательна! –