Ich verwende eine While-Schleife, um eine Liste von Benutzernamen aus einer CSV-Datei zu öffnen. Für jeden Benutzernamen muss ich eine URL öffnen und die Seite in eine Datei ablegen.Asynchroner Prozess in einem Casperjs-Skript für die While-Schleife
Allerdings läuft dann casper.thenOpen immer nur einmal. Ich habe aus Asynchronous Process inside a javascript for loop verstanden, dass dies darauf zurückzuführen ist, dass es sich um einen asynchronen Prozess handelt. Ich brauche unten das gleiche für meinen Code zu tun:
casper.then(function(){
stream = fs.open('usernames.csv', 'r');
targetusername = stream.readLine();
i = 0;
while(targetusername) {
var url = "http://blablalb" + targetusername;
console.log("current url is " + url);
casper.thenOpen(url, function() {
console.log ("I am here");
fs.write(targetusername,this.getTitle() + "\n",'w');
fs.write(targetusername,this.page.plainText,'a');
});
targetusername = stream.readLine();
i++;
}
});
Die casper.thenOpen läuft immer nur eine Zeit, mir diese Ausgabe zu geben:
current url is first_url
current url is second_url
current url is third_url
I am here
Was ich brauche, ist wie folgt
current url is first_url
I am here
current url is second_url
I am here
current url is third_url
I am here
Ich ziehe mir die Haare aus, damit die while-Schleife richtig läuft!
stoßen! Irgendjemand da draußen? – SoCRaT