使用节点“请求”库从回调中获取数据

问题描述:

我在努力研究如何从此代码示例获取返回数据。如果我试图从回调函数获取证书数据,它总是空的。有什么我在这里失踪?使用节点“请求”库从回调中获取数据

var Request = require('request'); 

    function callhttp(host) { 

    var cert = " "; 

    var options = { 
     url: 'https://' + host 
    }; 

    function callback(error, response, body) { 
     if (!error && response.statusCode == 200) { 
      var cert = response.connection.getPeerCertificate(); 
     } 
    } 
    Request(options, callback); 
    return cert 
} 
console.log(callhttp("www.google.com")); 

最好的问候。

通过返回'cert',您将操作称为同步操作,而不是。

正确的模式是通过一个回调函数和处理数据whitin:

var Request = require('request'); 

function callhttp(host, cb) { 

    var cert = " "; 

    var options = { 
     url: 'https://' + host 
    }; 

    function callback(error, response, body) { 
     if (!error && response.statusCode == 200) { 
      var cert = response.connection.getPeerCertificate(); 
      cb(cert); 
     } 
    } 
    Request(options, callback); 
} 

callhttp("www.google.com", function(_cert) { 
    console.log(_cert); 
}); 
+0

哇 - 确定。非常感谢。它现在正常工作。只是出于兴趣_这是什么意思? – user1513388 2015-02-10 19:08:09

+0

没有什么,只是你的语义显示与callhttp函数内的区别 – 2015-02-10 19:09:05