Выполнение кода с интервалами
При загрузке страницы со нее собираются все ссылки в массив.
Далее ссылки необходимо частями отправить на сервер 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, время: 04:31. |