我正在编写我的第一个“真正的”nodeJS包,我在处理该语言的异步方面时遇到了很多麻烦。
我有一个抓取一些html的请求,解析它(使用cheerio)并返回页面的所有链接标记。但这是一个相当大的计算,并且返回会很快触发,所以我的变量没有时间填充我的链接。
这是我的代码:
crawl.linksOfThePage = function(url) {
var aTags
, urls = [];
request(url, function(error, response, body){
if (!error && response.statusCode == 200) {
// Load the body
var $ = cheerio.load(body);
// Get all links
aTags = $('a');
for (var i = 0; i< aTags.length; i++) {
urls.push(aTags[i].attribs.href);
};
}
});
return urls;
}
任何有助于解决这个问题的帮助都会很棒,但是在一个更一般的主题中,我真的很难理解如何在节点中“返回”东西,我觉得我可以把“console.log”搞得一团糟,而且真的很重要我的变量可行性。任何建议/链接/文章,以帮助新的异步程序员?
感谢您的帮助:)
答案 0 :(得分:-1)
您需要返回网址的承诺。