Attendre la fin d'une fonction asynchrone
Bonjour,
Actuellement, j'utilise le programme Phantomjs, afin de récupérer des pages web, et les enregistrer.
Je possède un fichier id.txt qui contient l'id de toutes les pages que je souhaite récupérer et enregistrer.
Les informations dans le fichier id.txt sont de cette forme :
Citation:
nomDeLaPage-id
nomDeLaPage2-id2
nomDeLaPage3-id3
....
L'idée est donc de parcourir le fichier id.txt, et pour chaque ligne :
- Récupérer l’identifiant
- Ouvrir et enregistrer la page
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
var page = require('webpage').create();
var fs = require('fs');
var file_h = fs.open('id.txt', 'r'); // contains data like : myName-1111
var line = file_h.readLine();
while(line) {
data = line.split("-");
line = file_h.readLine();
savePage(data[1]);
}
function savePage(id){
page.open('http://www.myWebsite.com/'+id, function(){
page.evaluate();
fs.write("page/"+id+'.html', page.content, 'w');
});
}
file_h.close();
phantom.exit(); |
Le problème c'est que l'ouverture et l'écriture de la page se fait dans une fonction asynchrone (si j'ai bien compris).
J'aimerais donc pouvoir arrêter la boucle while tant que la page que je suis en train de récupérer, n'a pas été complètement récupérée et correctement enregistrée.
Merci d'avance pour vos propositions !