代码之家  ›  专栏  ›  技术社区  ›  user1513388

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

  •  0
  • user1513388  · 技术社区  · 10 年前

    我很难弄清楚如何从这个代码示例中获取返回数据。如果我试图从回调函数获取证书数据,它总是空的。这里有什么我遗漏的吗?

     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"));
    

    顺致敬意,

    1 回复  |  直到 10 年前
        1
  •  2
  •   Ben Diamant    10 年前

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

    正确的模式是传递回调函数并处理数据whitn:

     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);
    });