【问题标题】:Node Call Export on Callback回调时节点调用导出
【发布时间】:2015-07-13 14:59:49
【问题描述】:

我正在为没有从基础知识中学习而只是跳进去而大吃一惊。

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

【问题讨论】:

  • getSSL 需要回调作为第二个参数来返回数据。它看起来像:getSSL(id, function(data) { response.send(data) });
  • Related/dupe,其中isAuth 是您想要传递给最终回调函数的东西,可能在您的findByDomain 函数中定义。

标签: javascript node.js


【解决方案1】:

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

【讨论】:

  • 非常感谢,工作正常!现在我只需要研究一种更好的方法来检索 SSL 信息,而不需要整个首页 html 的开销。
猜你喜欢
  • 2018-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
  • 2015-10-13
  • 1970-01-01
相关资源
最近更新 更多