Метод цикла в phantomJS?

Я пытаюсь автоматизировать процесс загрузки многих скриншотов веб-страниц. Все скриншоты находятся на одной странице, но в зависимости от параметра строки запроса появляются разные данные.

мой код:

  var page = require('webpage').create();
  //How far the page extends in the image
  page.viewportSize = { width: 1024, height: 2500 };

  //size of the actual clip in the viewer (extra black space below image)
  page.clipRect = { top: 0, left: 0, width: 1024, height: 4500 };
console.log("configured");




for(var i = 1; i < 5; i++){


  page.open('http://testsite.com/view?id=' + i, function(status) {
    console.log("Status: " + status);
    if(status === "success") {

      //save image of page as this
      page.render(i + '.png');

    }
phantom.exit();


  });
}

Это работает без цикла for и просто устанавливает i в случайное число. У меня такое ощущение, что это связано с функцией обратного вызова и/или размещением phantom.exit(). Я пробовал много вариантов и не могу заставить его зацикливаться. Я также попытался добавить пользовательскую функцию синхронной задержки, но не уверен, где это может быть вызвано. Что было бы лучшим способом автоматизировать это... время и ресурсы не являются серьезной проблемой, так как это нужно просто запустить один раз, чтобы сбросить все изображения в файл.


person Ryan Gedwill    schedule 08.08.2016    source источник
comment
Ваш анализ верен, и есть простое решение: рекурсия. Я закрыл этот вопрос как дубликат другого вопроса, который содержит одно возможное решение. Существует бесчисленное множество возможных решений. В вашем случае вы можете, например, использовать свой цикл для заполнения массива urls из моего ответа в повторяющемся вопросе.   -  person Artjom B.    schedule 08.08.2016
comment
@ArtjomB.Спасибо! Я давно искал такой ответ и тот, на который вы ссылаетесь о рекурсии. Очень полное объяснение.   -  person Ryan Gedwill    schedule 08.08.2016