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