我正在使用cheerio,請求和Node.js.Node.js + Cheerio:循環內的請求
當我運行下面的腳本時,它以錯誤的順序輸出名稱。我相信它是由異步本質引起的,我怎樣才能使它以「正確」的順序工作?我需要使用同步軟件包還是有辦法以某種方式更改它,以便以同步方式工作?
app.get('/returned', function (req, res) {
for (var y = 0; y < 10; y++) {
var url = "http://example.com" + y + "/person.html";
request(url, function (err, resp, body) {
$ = cheerio.load(body);
var links = $('#container');
var name = links.find('span[itemprop="name"]').html(); // name
if (name == null) {
console.log("returned null");
} else {
console.log(name);
}
});
}
});
它取決於。你想要並行發送請求還是串行發送請求?如果您要求的服務器一次可以處理多個請求,那麼串行會比並行緩慢得多。可以並行處理它,同時仍然按照您想要的順序得到結果。 –
並行。我認爲異步會完成這項工作(由@ dm03514回答),我會研究它。 – salep
請注意,他的答案是串聯的,而不是平行的。但異步確實有並行選項,您只需以某種方式將結果以您想要的順序進行存儲,而不管它們將按順序調用。 –