2015-02-10 68 views
0

我在努力研究如何從此代碼示例獲取返回數據。如果我試圖從回調函數獲取證書數據,它總是空的。有什麼我在這裏失蹤?使用節點「請求」庫從回調中獲取數據

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

最好的問候。

回答

2

通過返回'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