我正在敲打我的头,因为我没有从基础知识中学习而只是跳进来。
我正在构建一个返回域的SSL证书状态的API。 它在console.log上工作正常,但JSON输出为空,显然是因为导出在https请求结束之前执行。
如何在response.on(end)函数中合并导出? 非常感谢!
function getSSL(domain) {
var options = {
host: 'www.'+domain+'.com',
method: 'get',
path: '/'
};
var isAuth = false;
callback = function(response) {
response.on('data', function () {
isAuth = response.socket.authorized;
});
response.on('end', function () {
console.log(isAuth);
});
}
var req = https.request(options, callback).end();
}
exports.findByDomain = function (req, response) {
var id = req.params.id;
sslCheck = getSSL(id);
response.send(sslCheck);
};
答案 0 :(得分:2)
是的,response.send(sslCheck);
在getSSL(id);
有机会完成之前执行。您需要发送一个回调,以便在 getSSL(id);
完成后执行:
function getSSL(domain, callback) {
var options = {
host: 'www.'+domain+'.com',
method: 'get',
path: '/'
};
var isAuth = false;
var httpCallback = function(response) {
response.on('data', function () {
isAuth = response.socket.authorized;
});
response.on('end', function () {
console.log(isAuth);
callback(isAuth);
});
}
var req = https.request(options, httpCallback).end();
}
exports.findByDomain = function (req, response) {
var id = req.params.id;
getSSL(id, function(sslCheck) {
response.send(sslCheck);
});
};