Рекурсивная функция в PhantomJS - PullRequest
0 голосов
/ 08 января 2019

Мне трудно понять, почему моя рекурсивная функция с setTimeout вызывается один раз, когда она должна быть больше, чем из-за базового случая.

page.open('', function() {
  var images = page.evaluate(function() {
    var count = 0;
    var data = [];
    function keepScrolling() {
      count += 1;
      if (count > 1000) {
        console.log('DONE');
      } else {
        console.log('count: ' + count);
        data.push(count);
        setTimeout(keepScrolling, 1000);
      }
    }
    keepScrolling();
    return data;
  });
  console.log(images);
});

Когда это вызывается внутри page.open, вызов keepScrolling показывает, что count увеличивается только один раз вместо тысячи раз, как я ожидал. Есть ли что-то, что мне нужно сделать, чтобы рекурсивная функция вызывалась более одного раза? Я бы ожидал, что data будет иметь длину 1000, но он имеет размер 1. Если бы я запускал это в браузере, он работал бы так, как я ожидал.

Вывод на консоль при запуске вышеуказанного.

> phantomjs file.js
count: 1
[1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...