我正在单击网页上的一个按钮以加载更多数据,但是当我评估页面中的代码以单击该按钮时,出现了一个问题,提示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();