Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 02.06.2018
Сообщений: 20

Как запустить цикл с таймингом

19.01.2019, 04:56. Показов 1915. Ответов 4

Студворк — интернет-сервис помощи студентам
в общем не хватает мозгов.

пытаюсь спарсить пользователей группы вк на чистом Js.
загвоздка с запросом к серверу. можно только 3 запроса в секунду. 6000 участников / 1000 = получаю 6 запросов.
циклом сдвигаю оффсет +=1000. куда я только сеттайм аут не вставлял.(((

в какую сторону копать((?
=====================
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var groupid = 'alysa_gap'; // это просто для примера))
var arr = [];
var arr1 = [];
var offset = 0;
 
creatScript = (link) => {
        var script = document.createElement('SCRIPT');
        script.src = link;
        document.getElementById('for-skript').appendChild(script);
        }
 
var count = 0;
 
(function getMembersCount() {
    var link = `https://api.vk.com/method/groups.getById?group_id=${groupid}&fields=members_count&access_token=73c0f3390aed55d4a78157b992109926140b72fff032e0dfb1f625867bd58ae801f6894d660194303a4b5&v=5.87&callback=callbacCount`;
    creatScript(link);
})();
 
function callbacCount(data) {
    count = data.response[0].members_count;
    console.log(count);
    var loop = Math.ceil(count / 1000);
    console.log(loop);
    for (i = 0; i < loop; i++) {
        offset = offset + 1000;
        var link = `https://api.vk.com/method/groups.getMembers?group_id=${groupid}&offset=${offset}&access_token=ff998fdf0daed55d4a78157b992109926140b72fff032e0dfb1f625867bd58ae801f6894d660194303a4b5&v=5.87&callback=callbacMembers`;
        creatScript(link);
    }
}
 
function callbacMembers(data) {
    // console.log(data);
    
    arr.push(data.response.items);
    arr1 = [...arr];
    // console.log(arr1);
    // console.log(arr[0].length);
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2019, 04:56
Ответы с готовыми решениями:

Как запустить такой цикл?
Доброго времени суток! Есть такая задача: два excel файла. В первом создается разное количество листов с одинаковой структурой и...

Как запустить прерванный цикл while?
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include...

Как запустить цикл через, к примеру 15 секунд?
Как запустить эту коратину через определенное время? То есть, я запускаю сцену, и через 15 секунд запускается эта коратина... Прям...

4
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
19.01.2019, 20:31
Gerz2011,
  1. Не публикуйте свой access_token, заменяйте его при публикцаии на звездочки или другой текст
  2. Почему вы выполняете запрос путем создания элемента <script>, а не AJAX запросом?
  3. Этот код должен работать только для 6000 участников, или уметь парсить любое их количество?
  4. Почему сразу не запрашиваете всех участинков? Это лимит VK API?
0
0 / 0 / 0
Регистрация: 02.06.2018
Сообщений: 20
19.01.2019, 22:20  [ТС]
1 - Токен конечно же заменён (по клавиатуре пальцами настучал).
2 - просто удобней (не надо запускать сервер) есть вариант и с аджакс ну и келбек очень удобно.
3 - любое количество
4 - Да лимит. 1000 акков за раз, 3 запроса в секунду.

//получаю количество участников
//делю её на 1000 и получаю количество запросов
//в запрос надо передать параметр offset начало парсинга аккаунтов сдвиг соответственно 1000 (первый запрос offset = 0 получил 1000 аков, следующий запрос offset = 1000 получаю следующие 1000 акков.)

как выполнить какое то количество запросов (больше 3) с таймингом в 400 милисек с изменением одного параметра в запросе.
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
19.01.2019, 22:39
Лучший ответ Сообщение было отмечено Gerz2011 как решение

Решение

Цитата Сообщение от Gerz2011 Посмотреть сообщение
Токен конечно же заменён (по клавиатуре пальцами настучал).
Профессиональная подмена

Цитата Сообщение от Gerz2011 Посмотреть сообщение
как выполнить какое то количество запросов (больше 3) с таймингом в 400 милисек с изменением одного параметра в запросе.
Что-то вроде этого:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var requestsMade = 0;
var maxRequests = 3;
 
function delayRequests(callback) {
  callback();
 
  setTimeout(() => {
   requestsMade++;
 
   if (requestsMade < maxRequests) {
     delayRequests(callback);
   }
  }, 500);
}
Использовать так:
JavaScript
1
delayRequests(myRequestSender); //<-- myRequestSender - функция, которая будет отправлять ваш запрос
В самой функции используйте requestsMade для изменения offset-а

Добавлено через 1 минуту

Не по теме:


Даже не заметил что в коде 2 разных токена :)

1
0 / 0 / 0
Регистрация: 02.06.2018
Сообщений: 20
20.01.2019, 03:42  [ТС]
спасибо!!!! щас ночь опустится на город и займусь

Добавлено через 3 часа 42 минуты
Ура всё работает!!!!!!!!!!!!!!! наконец то.. сколько я с келбеками разбирался разбирался..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.01.2019, 03:42
Помогаю со студенческими работами здесь

Как вне потока запустить цикл который был остановлен
Вот поток есть допустим 100 циклов for, прошло 36 и в catch вылезла ошибка, типо сервис запрашивает капчу, капчу я отправил кнопкой, но...

Цикл: Как запустить метод T в цикле, чтобы результат каждый раз подставлялся в S1, S2, S3...
Здравствуйте! Все методы ниже в одном классе public double T() { return 12+3; }

Можно ли через цикл запустить активацию нескольких checkbox-ов? Если можно, то как...
Здравствуйте. делаю тест в word при помощи checkbox-ов. (код access) и у меня такой вопрос, можно ли через цикл запустить активацию...

2 планки Озу с разным таймингом
Здравствуйте... Такое дело стоят на компе 2 планки по 4Г DDR3.. Вопрос такой... то что у них Тайминги отличаются влияет на общую...

Сравнение dgv между собой с таймингом
Всем привет! Уважаемые знатоки, подскажите как правильно и и с наименьшим кодом организовать следующую задачу: есть 3 datagridview, есть 60...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru