Выполнение кода с интервалами
При загрузке страницы со нее собираются все ссылки в массив.
Далее ссылки необходимо частями отправить на сервер ajax-ом, с интервалами между каждой 10-й отправкой, чтобы не вешать страницу браузера, т.к. от сервера еще получается ответ по каждой из ссылок. (10 ссылок отправили, перерыв 5 секунд, далее следующие 10 и т.д.) Ниже код, никак не могу разобраться как верно написать. В текущем варианте код не попадает в эту часть if(i !=0 && i%10==0). Помогите, пожалуйста, разобраться, мозги уже плавятся..
var nCut = 0,
hrefArr2 = [];
cutDatalinks('');
function cutDatalinks(hrefArr2){
var cutHrefArr = []; // минимассив для отправки ссылок частями
if(hrefArr2==''){
hrefArr2 = hrefArr; // hrefArr - массив со всеми ссылками собранными со страницы
}
for(i=nCut;i<hrefArr2.length;i++){
if(i==10){
//ставим интервал через который запустить эту же функцию
var cutInterval = setInterval(cutDatalinks(hrefArr2), 5000);
}
if(i==hrefArr2.length-1){
//прекратить работу интервалов
clearInterval(cutInterval);
//передаем минимассив cutHrefArr в метод, который направляет ссылки серверу
getData('', '', cutHrefArr);
//обнуляем минимассив cutHrefArr
cutHrefArr.length = 0;
nCut = 0; //устанавливаем начало счетчика
}
cutHrefArr.push(hrefArr2[i]);
console.log('1 - ' + i);
if(i !=0 && i%10==0){// целое число
console.log('2 - ' + i);
//передаем минимассив cutHrefArr в метод, который направляет ссылки серверу
getData('', '', cutHrefArr);
//обнуляем минимассив cutHrefArr
cutHrefArr.length = 0;
nCut = nCut + 10; //устанавливаем начало счетчика
break;
}
}
}
|
Цитата:
(function(){
var arr=[1,2,3,4,5,6,7,8,9];
var n=5;
var l=arr.length;
var start=0;
setTimeout(sendData,1000);
function sendData(){
var end=start+n;
end=(end>l)? l: end;
var a=arr.slice(start,end);
alert('Шлем '+a);
start=end;
if (start<l) {
setTimeout(sendData,1000);;
};
};
})();
|
Огромное Вам спасибо!
Небольшой баг: start+=end; Верно будет: start=end; |
Цитата:
Исправил. |
| Часовой пояс GMT +3, время: 07:04. |