JavaScript变量失去价值

时间:2019-01-24 00:53:50

标签: environment-variables javascript amazon-web-services node.js

我创建了以下功能:

function buildSpeechletResponse(title, output, repromptText, shouldEndSession) {
    return {
        outputSpeech: {
            type: 'PlainText',
            text: `${output}`,
        },
        card: {
            type: 'Simple',
            title: 'Bible Library',
            content: 'Bible Passage',
        },
        reprompt: {
            outputSpeech: {
                type: 'PlainText',
                text: repromptText,
            },
        },
        shouldEndSession,
    };
}

当我正常调用函数时,可以预期到响应,一切正常。但是,在以下代码中,我发出了GET请求,并在GET请求中更改了一个变量,然后将我的回调函数与更改后的变量一起使用。当我这样做并在buildSpeechletResponse调用中测试输出参数时,输出为空。

function getPassage(callback) {
    var url = 'privateurl';
    var body = '';
    var finalPassage = '';
    https.get(url, function(res) {
        console.log("Got response: " + res.statusCode);
        res.on('data', function(chunk) {
            body += chunk;
        });
        res.on('end', function() {
            var response = JSON.parse(body);
            finalPassage = JSON.stringify(response.passage);
            callback({}, buildSpeechletResponse('Session Ended', finalPassage, "", false));
            return response;
        });
    }).on('error', function(e) {
        console.log("Got error: " + e.message);
    })
    callback({}, buildSpeechletResponse('Session Ended', finalPassage, finalPassage, false));
}

当我测试查看是否将finalPassage作为参数传递之前,我看到它是预期的字符串。好像我的字符串在buildSpeechletResponse的调用中丢失了?我不确定为什么突然之间变得空虚。当我使用已给定的字符串进行完全相同的调用时,例如:

var finalPassage = '';
finalPassage = "rand";
callback({}, buildSpeechletResponse('Session Ended', finalPassage, "", false));

在我的buildSpeechletResponse函数中,输出正确并且输出等于“ rand”。好像是因为我传递了一个变量,该变量在我从GET请求中为其分配字符串的过程中丢失了?我不知道怎么会或为什么会这样。任何人都知道任何解决方案,或者我的代码可能有什么问题吗?

0 个答案:

没有答案