理解node.js回调

时间:2013-12-10 23:13:16

标签: javascript node.js

我正在使用urllib向网页发出请求,而我正试图像这样返回它的标题:

var getHeaders = function(webpage){
    var info = urllib.request(webpage, {}, function(err, data, res){
        // console.log(res.headers); works fine and shows them
        return res.headers; // I thought it should make the info variable have the headers information
    }); 
    return info; 
}

现在,当我尝试获取网页的set-cookie之类的标题时,我打算将其从网站返回,但它没有,那么有没有办法返回标题,或者只是不可能这样做?

1 个答案:

答案 0 :(得分:5)

在Node中几乎所有东西都是异步完成的,所以你只需要你的函数是异步的。

var getHeaders = function (webpage, done) {
    urllib.request(webpage, {}, function(err, data, res){
        done(err, res.headers);
    });  
}

传统的模式是使用回调函数作为第一个参数返回错误(或者在一切顺利的情况下返回一个假值),以及之后需要返回的任何内容。

使用该方法非常类似于您对urllib事物的处理方式。

getHeaders(webpage, function (err, headers) {
    if (err) {
        throw err; // or, you know, deal with it.
    }
    console.log(headers);
});