CasperJS: Iterando através de URLs

Eu sou bastante novo no CasperJS, mas não existe uma maneira de abrir uma URL e executar comandos do CasperJS para loops? Por exemplo, esse código não funciona como eu esperava:

casper.then(function() {
    var counter = 2013;
    for (i = counter; i < 2014; i++) {
        var file_name = "./Draws/wimbledon_draw_" + counter + ".json";
        // getting some local json files
        var json = require(file_name);
        var first_round = json["1"];
        for (var key in first_round) {
            var name = first_round[key].player_1.replace(/\s+/g, '-');
            var normal_url = "http://www.atpworldtour.com/Tennis/Players/" + name;
            // the casper command below only executes AFTER the for loop is done
            casper.thenOpen(normal_url, function() {
                this.echo(normal_url);
            });
        }
    }
});

Em vez de Casper está chamandothenOpen em cada novo URL por iteração, ele é chamado apenas APÓS a execução do loop for. CasperthenOpen então é chamado com o último valor normal_url definido como. Não existe um comando Casper para que ele funcione a cada iteração no loop for?

Acompanhamento: Como fazemos com que o casper thenOpen retorne um valor na iteração atual do loop for?

Digamos, por exemplo, eu precisava de um valor de retorno nessethenOpen (talvez se o status HTTP for 404, eu precise avaliar outro URL para retornar falso). Isso é possível?

Ediçãocasper.thenOpen ligue acima:

    var status;
    // thenOpen() only executes after the console.log statement directly below
    casper.thenOpen(normal_url, function() {
        status = this.status(false)['currentHTTPStatus'];
        if (status == 200) {
            return true;
        } else {
            return false;
        }
    });
    console.log(status); // This prints UNDEFINED the same number of times as iterations.

questionAnswers(2)

yourAnswerToTheQuestion