async.each和http get

时间:2014-07-28 22:09:08

标签: javascript node.js asynchronous

我想以编程方式从多个网址中获取元标记并用于进一步处理。 我使用下面的代码片段,这个代码片段始终只打印第一个urls元标记,并且异步回调res未定义。我在这里错过了异步吗?

var http = require('http'),
    cheerio = require('cheerio'),
    async = require('async'),
    urls = [
        "http://theatlantic.com",
        "http://nytimes.com"
    ];

    function test() {
    var $, data = '';

    getMetaData = function(uri, callback) {
        http.get(uri, function(resp) {
            console.log('Fetching Url:' + uri);

            resp.on('data', function (chunk){
                data += chunk;
            });

            resp.on('end', function () {
                $ = cheerio.load(data);
                console.log('Meta Tag:' + $('meta[property="og:description"]').attr('content') + '\n'); //use for furthur processing
                callback(null, $('meta[name="description"]').attr('content'));
            });
        });
    }

    async.each(urls, getMetaData, function(err, res) {
       console.log(res);
    });
};

test();

0 个答案:

没有答案