0
request
の複数のページをasync.forEach
に入力したいと考えています。私はいくつかのlinks
を持っていて、私は各リンクに行き、それからsublinks
を得たいと思う。次に、各サブリンクを評価し、結果をdataarray
にプッシュします。しかし、sublink
の最初の1つだけが、配列の要素であるlinks
ごとに複数回評価されます。しかし、それぞれsublink
を評価したいと思います。以下は私のコードです:リクエストは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");
})
私は間違っていますか?
よろしく
なぜリンクを使用していますか? –
閉鎖機能を使用する –
@AlokDeshwal答えを書いてください。どうすればいいですか? :) – user1665355