Я нажимаю кнопку на веб-странице, чтобы загрузить дополнительные данные, но когда я оцениваю код на странице, чтобы нажать кнопку, у меня возникает проблема, которая говорит: Maximum call stack size exceeded
.Я не знаю, что вызывает эту проблему.
Я вызываю функцию evalRecursively()
рекурсивно.Поскольку у меня есть определенные условия, при которых я должен вызывать эту функцию рекурсивно, и в рамках этой функции я вызываю buttonLoad()
, который нажимает кнопку на веб-странице.Все идет гладко, пока не вызывается buttonLoad()
, и даже не это, но когда вызывается await ph_page.evaluate()
и выполняется код внутри него, это вызывает проблему.
Мой код
function ScrapMetaData() {
this.buttonLoad = async function() {
await ph_page.evaluate(function() {
var el = document.getElementsByClassName("load-more")[0];
el.click();
});
return 0;
}
}
var SMD = new ScrapMetaData();
function evalRecursively() {
if (page_number == 4) { //res.data.pages
count++;
new ScrapMetaData().flush();
_this.checkConditions();
return;
} else {
if (companies[count].pages_defined === 1) {
SMD.evaluatePage(
companies[count].page_jobs_data_code
).then(function(evRes) {
if (evRes.success) {
event.emit("pageEvaluated", evRes);
if (companies[count].pagination === 1) {
SMD.clickNext(
companies[count].next_page_button_code,
companies[count].get_page_number_code
).then(function(clRes) {
if (clRes.success) {
evalRecursively();
}
});
} else {
SMD.buttonLoad(
companies[count].button_loading_code
).then(function(btRes) {
console.log(btRes);
})
}
}
});
} else {
SMD.evaluatePage(
companies[count].page_jobs_data_code
).then(function(evRes) {
if (evRes.success) {
event.emit("pageEvaluated", evRes);
if (companies[count].pagination === 1) {
SMD.clickNext(
companies[count].next_page_button_code,
companies[count].get_page_number_code
).then(function(clRes) {
if (clRes.success) {
evalRecursively();
}
});
} else {
SMD.buttonLoad(
companies[count].button_loading_code,
companies[count].current_job_compare
).then(function(btRes) {
console.log(btRes);
})
}
}
});
}
}
}
evalRecursively();
Это информация стека, которую он дает ![The Image](https://i.stack.imgur.com/spj58.png)