170 похожих чатов

Никто не подскажет как сделать чтобы оно отправляло по одному

запросу ? Аналог forEach вообщем ибо он сразу делает 1000 запросов на функцию от чего у меня компьютер взрывается. Что можно сделать чтобы он отправлял запрос следующий раз тогда когда получит ответ от функции?

22 ответов

19 просмотров

Проблема в том, что вызов Parse происходит слишком часто? поставь await перед ним и сделай async функцию. Если Parse ходит куда-то по сети

корректнее будет спросить в @js_noobs_ru

соля- Автор вопроса

ок

соля- Автор вопроса

Вообще не сработало 😁 Открылось 72 браузера(Puppeteer) и начали очень много ошибок бить. Может есть какие-то либы?

соля- Автор вопроса

Не совсем тебя понял, может если расскажу как работает мой то мы поймём друг друга. Мой по алшгоритму должен собрать все ссылки из страницы а потом передавать их в функцию, но не таким образом как это делает forEach xd

Я просто не очень понял из твоего кода, где именно возникает проблема. Если в строках forEach(... => { Parse() }) и тебе нужно, чтобы это все было последовательно, то решение простое -- дожидаться, пока Parse завершит работу. Как Parse отчитывается о завершении работы? callback или promise? Если callback, то вызывать Parse внутри коллбека. Если промис, то делать await или then. setTimeout чтобы чего-то дожидаться наподобие сети лучше никогда не использовать

соля- Автор вопроса

Я думаю можно использовать в этой ситуации setTimeout так как на каждую страницу уходит не более 6.7 секунд

Да? А вдруг на сеть нагрузка чуть увеличится и будет 8 секунд? Это очень реальный сценарий. А может с сервером не так что-то и он вообще будет тянуть с ответом 60 секунд? Я не вижу препятствий сделать по-нормальному, на промисах

соля- Автор вопроса

Просто я представления о них не понимаю и не знаю как отредактировать код чтобы работало как ты подсказал

вот этот fetch, который в самом начале, запускается один раз?

соля- Автор вопроса

Да

.forEach(async currLink => { await Parse(currLink); }); всё

соля- Автор вопроса

пробовал, не работает)

Нифига ты умный

что не так

Мда. И правда насоветовали.

?

Либо внутри async функции использовать of как тут предлагают

Та не, нельзя. Та же проблема будет

Что ты создашь length параллельных промисов в самом начале

Потому что сначала должен будет завершится текущий синхронный поток исполнения, то есть отработать весь цикл

А, блин, да, тупанул Тогда for of нужен

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
10
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Карта сайта