Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 回调时的节点调用导出_Javascript_Node.js - Fatal编程技术网

Javascript 回调时的节点调用导出

Javascript 回调时的节点调用导出,javascript,node.js,Javascript,Node.js,我因为没有从基础知识中学习而只是跳进去而大发雷霆 我正在构建一个API,它返回域的SSL证书状态。 它在console.log上运行良好,但JSON输出为空,这显然是因为导出在https请求结束之前执行 如何在response.on(end)函数中合并导出? 非常感谢 函数getSSL(域){ 变量选项={ 主机:“www.+domain+'.com”, 方法:“get”, 路径:'/' }; var-isAuth=false; 回调=函数(响应){ on('data',function(){

我因为没有从基础知识中学习而只是跳进去而大发雷霆

我正在构建一个API,它返回域的SSL证书状态。 它在console.log上运行良好,但JSON输出为空,这显然是因为导出在https请求结束之前执行

如何在response.on(end)函数中合并导出? 非常感谢

函数getSSL(域){
变量选项={
主机:“www.+domain+'.com”,
方法:“get”,
路径:'/'
};
var-isAuth=false;
回调=函数(响应){
on('data',function(){
isAuth=response.socket.authorized;
});
response.on('end',function(){
console.log(isAuth);
});
}   
var req=https.request(选项,回调).end();
}
exports.findByDomain=函数(请求,响应){
var id=请求参数id;
sslCheck=getSSL(id);
response.send(sslCheck);

};是,响应.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);
    });
};

getSSL
需要回调作为返回数据的第二个参数。它看起来像:
getSSL(id,函数(数据){response.send(数据)})
,其中,
isAuth
是您希望传递给最终回调函数的内容,可能是在您的
findByDomain
函数中定义的。非常感谢,工作正常!现在我只需要研究一种更好的方法来检索SSL信息,而不需要整个第一页html的开销。