Как / где завершить кошмарный вызов, используемый в цикле? - PullRequest
0 голосов
/ 26 июня 2019

У меня есть кошмарный звонок, который я создал, который работает, но никогда не завершает процесс в терминале. Я знаю, что, вероятно, где-то здесь должен быть .end (), но все примеры, которые я видел, помещают их перед .then (), и когда он у меня есть, он немедленно останавливает вызов и ничего не регистрирует.

Есть предложения?

links.reduce((acc, link) => {
  return acc.then(results => {
    return nightmare.goto(link)
      .wait('.mainpane')
      .evaluate(() => {
        let starData = {};

        let rows = Array.from(document.querySelectorAll('tr'));
        rows = rows.map(row => [...row.children].map(td => td.innerText.trim()));
        rows.forEach((row, i) => {
          if (i === 1) {
            starData[row[0].split('\n')[0]] = row[0].split('\n')[1];
            starData[row[1].split('\n')[0]] = row[1].split('\n')[1];
          } else if (i > 1 && i < 11) {
            starData[row[0].split(':')[0]] = row[1].replace(/ *\[[^\]]*]/g, '').replace(/\n/g, ', ');
          }
        });

        return JSON.stringify(starData);
      })
      .then(result => {
        results.push(result);
        return results;
      })
      .catch(function (error) {
        console.error('Search failed:', error);
      });
  });
}, Promise.resolve([]))
  .then(results => console.log(results))
  .catch(err => console.log(err));
...