Я использую этот код для перебора массива и вызвать функцию doAjax()
для каждого value
:
$.each(categories, function(index, value){
doAjax(value);
});
Функцию doAjax()
будет сделать вызов Ajax и добавить некоторые данные в HTML стр. Проблема в том, что когда я прохожу через большой массив (индексы 10+), это приводит к сбою моего веб-сайта.
Единственный способ, которым я могу думать, чтобы решить эту проблему, чтобы слушателю страницы, как это:
$(window).scroll(function(){
if($(window).scrollTop() + $(window).height() >= $(document).height() - 50){
//code to trigger function goes here
}
});
так, когда пользователь прокрутки в нижней части страницы она будет загружать больше вещей.
Поэтому я хочу, чтобы мой $.each
звонил только doAjax()
3 или 4 раза. Проблема я столкнулся в том, что его называя одни и те же значения из массива, так что я сделал временно переменную и сохраненную мой исходный массив в нем, как так:
var temp = categories;
, а затем каждый раз, когда $.each
работает, я удалить значение из массив temp.
Я знаю, что это не лучший способ сделать что-то, но это то, о чем я мог думать.
Если вы можете предложить лучший способ решить эту проблему, которая будет оценена по достоинству. В противном случае я хочу, чтобы мой $ .each запускался хотя бы один раз (и только через 3 или 4 элемента), когда загружается doc, а затем удаляет элементы массива, которые он уже прошел, а затем запускается снова (только через 3 или 4 элемента), когда пользователь прокрутки в нижней части страницы, пока больше нет элементов в массиве темп ..
Почему вы не можете передать все значения категории в одном результате и получить ответ как json? –
Я использую google search api. и я хочу сделать один вызов за элемент. –
, вероятно, нужно задушить код, запущенный в обработчике 'scroll'. Имейте в виду, что событие 'scroll' будет срабатывать много раз в секунду, пока пользователь перемещает полосу прокрутки. – charlietfl