Je souhaite demander plusieurs pages avec request
dans async.forEach
. J'ai plusieurs links
, et je veux aller à chaque lien et obtenir le sublinks
à partir de celui-ci. Ensuite, je veux évaluer chaque sous-lien et pousser les résultats à dataarray
. Mais seul le premier sublink
est évalué plusieurs fois, pour chaque élément de tableau links
. Mais je veux évaluer chaque sublink
. Voici mon code:Les demandes ne sont pas évaluées correctement dans async.forEach
var dataarray = [];
var links = ["www.mysite.com/1","www.mysite.com/2","www.mysite.com/3"];
async.whilst(
function() { console.log("Number of links left: " + links.length); return links.length > 0; },
function(innerCallback){
var i1 = getRandomInt(1, links.length); //getRandomInt is a function that gives a random integer in array.
var Theurl = links[i1-1];
request({
url: Theurl,
//More paramaters to request here...
}, function(error, response, body) {
if (response) {
//Evaluate some jquery to get a variable allsublinks used later on.
//So I get several sub-links in each element in links array.
var allsublinks = stuff;
//Now I define a function to be used in async.forEach. I basically need to
//loop over allsublinks array that contains different url links.
function getInfo(name, thiscallback) {
console.log("Online");
console.log("Current url: "+name);
request({
url: name,
//Other parameters to request.
}, function(error, response, body) {
if (response) {
//Here I evaluate some jquery again to get the datafromthislink variable
dataarray.push(datafromthislink);
setTimeout(function() { thiscallback(); });
}
})
}
//Now I use async.forEach to loop over allstorelinks.
async.forEach(allsublinks, getInfo, function(err, results) {
console.log("dataarray: ",dataarray);
setTimeout(function() { links.splice(i1-1, 1); innerCallback(); });
});
}
})
},
function(err){
console.log("All Done");
})
Qu'est-ce que je fais mal?
Cordialement
Pourquoi utilisez-vous alors que pour les liens? 'async.each (liens, fonction (lien, callback) {' vous auriez sauvé beaucoup d'ennuis.) Pas sûr, mais probablement le problème est quelque part dans la partie while –
utilisez la fonction de fermeture –
@AlokDeshwal S'il vous plaît écrivez une réponse? :) – user1665355