我有一个对网站上前5页的所有链接进行拼合并将其放入数组的功能。我必须确保在数组收集了所有链接之后必须执行以下步骤。但是,由于节点中的“异步”,返回的数组为空。
<pre><code>
var allURL = [];
function crawelAllLinks() {
for (let i = 1;i <= 5;i++) {
let mainURL = 'https://bbs.hupu.com/selfie-' + i;
superagent.get(mainURL)
.then(res => {
let $ = cheerio.load(res.text);
$('.titlelink>a:first-child').each((index, element) => {
let $element = $(element);
let href = url.resolve(mainURL, $element.attr('href'));
allURL.push(href);
});
})
.catch(err => {
return console.log(err);
});
}
return allURL
}
</code></pre>
答案 0 :(得分:-1)
您需要将所有promise收集到一个数组中,并使用Promise.all([array])来解析所有promise的URL