Мне трудно понять, почему моя рекурсивная функция с 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]