节点呼叫导出回呼

Node Call Export on Callback

本文关键字:呼叫 节点      更新时间:2023-09-26

我很后悔没有从基础知识中学习,只是跳进来。

我正在构建一个返回域的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);
};

是的,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);
    });
};