2

我需要调用一个发出 http 请求的函数,并让它通过回调将值返回给我。但是,当我尝试时,我不断收到空响应。有什么帮助吗?

这是我的代码:

var url = 'www.someurl.com'
makeCall(url, function(results){return results})

makeCall = function (url, results) {
          https.get(url,function (res) {
           res.on('data', function (d) {
                    resObj = JSON.parse(d);
                    results(resObj.value)

                });
            }).on('error', function (e) {
                     console.error(e);
                });
        }
4

1 回答 1

12

您需要重组代码以使用回调而不是返回值。这是一个获取您的外部 IP 地址的修改示例:

var http = require('http');

var url = 'http://ip-api.com/json';

function makeCall (url, callback) {
    http.get(url,function (res) {
        res.on('data', function (d) {
            callback(JSON.parse(d));
        });
        res.on('error', function (e) {
            console.error(e);
        });
    });
}

function handleResults(results){
    //do something with the results
}

makeCall(url, function(results){
    console.log('results:',results);
    handleResults(results);        
});
于 2013-05-31T16:24:28.140 回答