gzhegow
@gzhegow
aka "ОбнимиБизнесмена"

NodeJS — Как сделать циклический then на Promise() — делать запросы пачками по 5 штук?

Можете пояснить пожалуйста как правильно писать очереди запросов без рекурсии, если использовать промисы? Я что-то совсем запутался. Выкладываю свой код, и не понимаю где тут вставить временную задержку правильно.

do {
      current_partnums = partnums.splice(0, limit);
      Promise.all(ps).then((function (current_partnums) {
        ps = current_partnums.map(function (partnum) {
          // get google results for each part
          return getGooglePartResults(partnum)
            // after search parse pages
            .then(function (part) {
              return parseGooglePartResults(part);
            });
        });
      }).bind(null, current_partnums));
    } while (partnums.length);

Конечно гугл выдает что каптча и что бот, когда пачкой 1000 запросов поиска приходит. Хочется поставить задержку секунд 5 между каждым запросом.

Добавлял в ps.push() запрос с таймаутом но он одновременно создает 1000 таймаутов и все они заканчиваются через 3 секунды, а не после каждого запроса 3 сек. Помогите
  • Вопрос задан
  • 345 просмотров
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
@Coder321
Если правильно понял вопрос, то такое банальное решение должно помочь
return new Promise((resolve) => {
    setTimeout(() => {
        return resolve(parseGooglePartResults(part));
    }, 5000)
})
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы