RangeError: Превышен максимальный размер стека вызовов - Phantom JS - PullRequest
0 голосов
/ 25 ноября 2018

Я нажимаю кнопку на веб-странице, чтобы загрузить дополнительные данные, но когда я оцениваю код на странице, чтобы нажать кнопку, у меня возникает проблема, которая говорит: 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...