PhantomJS中的递归函数

时间:2019-01-08 20:30:14

标签: javascript web phantomjs settimeout

由于基本情况,我很难理解为什么我的带有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]

0 个答案:

没有答案