Простое решение с рекурсивным обратным вызовом
Однако, прежде чем мы углубимся в это, вы можете попытаться запустить саму функцию вместо while
, которая будет работать постоянно без какого-либо должного контроля.
const readLoop = async() => {
const html = await page.content();
cant = await readOdds(html);
return readLoop() // run the loop again
}
// invoke it for infinite callbacks without any delays at all
await readLoop();
Который будет выполнять одну и ту же блочную функцию непрерывно, без задержки, пока ваша функция readOdds не вернется.Вам не нужно будет использовать page.waitFor
и while
.
Предотвращение утечек памяти
Для сложных случаев, когда вы возрождаетесь в течение определенного периода времени, Очередь, как bull и менеджер процессов, такой как PM2 , вступает в игру.Тем не менее, очередь аннулирует вашу without refresh the page?
часть вашего вопроса.
Вы определенно должны использовать pm2.
Использование выглядит следующим образом:
npm i -g pm2
pm2 start index.js --name=myawesomeapp // or your app file
Есть несколько полезных аргументов,
--max-memory-restart 100M
, он может ограничить использование памяти до 100M и перезапустить себя. --max-restarts 50
, он перестанет работать после перезапуска 50 раз из-за ошибки (или утечки памяти).
Вы можете проверить журналы, используя pm2 logs myawesomeapp
, как вы установилиимя выше.