理解node.js回调

rul*_*ler 0 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; 
}
Run Code Online (Sandbox Code Playgroud)

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

bev*_*qua 5

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

var getHeaders = function (webpage, done) {
    urllib.request(webpage, {}, function(err, data, res){
        done(err, res.headers);
    });  
}
Run Code Online (Sandbox Code Playgroud)

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

因此,使用该方法非常类似于您对该urllib事物所做的事情.

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