nodejs返回和异步

时间:2015-11-12 14:43:15

标签: javascript node.js asynchronous return

我正在编写我的第一个“真正的”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”搞得一团糟,而且真的很重要我的变量可行性。任何建议/链接/文章,以帮助新的异步程序员?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:-1)

您需要返回网址的承诺。

相关问题