Проблемы асинхронности в AJAX (JQuery)

программирование JavaScript jQuery AJAX

Задача такая.
У меня имеется n div'ов, каждый из которых должен обновляться по аяксу с некоторой частотой характерной только для него. Для этого у меня имеется массив divArr, в котором содержатся объекты, содержащие сслыку на div, его частоту и некоторые другие данные, для данной задачи не существенные.
Каждые 10 мс у меня запускается функция, которая содержит цикл, проходящий все элементы массива, и если для какого-то из них пришло врем обновляться - посылает запрос.
А вот дальше начинаются сложности. Собственно, вопрос состоит в том, как в обработчик успешного получения данных запихать ссылку на этот самый div, ведь к моменту вызова обаботчика divArr[i] содержит уже совсем другой объект..
function f(){
var t = (new Date()).getTime();
for(var i in divArr){
if(t - divArr[i].lastQ > divArr[i].freq){
divArr[i].lastQ = t;
$.ajax({
success: function(data){
divArr[i].cell.text(data)
}
});
}
}
}

Примечание:
Блин, когда уже гуглотвевты перестанут убирать пробелы в начале строк.. =(

Примечание:
> Юзай setTimeout для каждого дива, а не проходи массив постоянно.
да ну нафик, у меня этих дивов сотни. Сотни таймаутов, висящих фоном.. Хотя, конечно, еще вопрос что лучше..

Примечание:
> Если у тебя массив специально создан для хранения ссылок на дивы, каким макаром в divArr[i] может оказатся что-то другое? о_О
Ну, в смысле сменился i уже.

Примечание:
> Как костыль: передавать i через ajax и его же возвращать скриптовым сервером
Как сказали мне старшие товарищи, это не костыль, а как раз самое правильное поведение для вёба.
Ответы:
Юзай setTimeout для каждого дива, а не проходи массив постоянно.
О какой асинхронности может быть реч, если все дивы обходит одна функция? Поставь на каждый див свой таймер - ето раз решение.
> Ну, в смысле сменился i уже.
Как костыль: передавать i через ajax и его же возвращать скриптовым сервером


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.