Wartość zwracana przez JavaScript z funkcji [duplikat]

To pytanie ma już tutaj odpowiedź:

Jak zwrócić odpowiedź z połączenia asynchronicznego? 33 odpowiedzi

Ludzie, następujący fragment kodu nie zwraca poprawnie „baz”. Mówi o swoim niezdefiniowanym. Czemu?

getJSON = function(options, onResult)
{
    //console.log("rest::getJSON");
    var prot = options.port == 8443 ? https : http;
    var req = prot.request(options, function(res)
    {
        var output = '';
        console.log(options.host + ':' + res.statusCode);
        res.setEncoding('utf8');

        res.on('data', function (chunk) {
            output += chunk;
        });

        res.on('end', function() {
            var obj = JSON.parse(output);
            onResult(res.statusCode, obj);
        });
    });
    req.on('error', function(err) {
        //res.send('error: ' + err.message);
    });
    req.end();
};

exports.Search = function(req, res){
    if (!req.session.username) {
        res.redirect('/login');
    } else {

        options = {
            host: 'api.host.com',
            port: 443,
            path: '/ver/foo/'+req.body.bar,
            method: 'GET',
            rejectUnauthorized: false,
            requestCert: true,
            agent: false,
            headers: {
                'Content-Type': 'application/json'
                }
        };

        var baz = getJSON(options,function(statusCode, result) {
            console.log("onResult: (" + statusCode + ")" + JSON.stringify(result));
            // Check if User Exists
            status = JSON.stringify(result.Count)
            status = JSON.parse(status)
            if (status == 0) {
                res.render('foo/bar', { title: 'Title', Results: status, req: req });
            } else {
                results = JSON.stringify(result.Items)
                results = JSON.parse(results)
                name = results[0].name.S
                console.log("Found ",name)
                res.render('views/bar', { title: 'title', results: results, req: req });
            }
            baz = 'test';
            return baz;
        });
    }
 console.log(baz);
};

questionAnswers(1)

yourAnswerToTheQuestion