Const speechText 未定义

Const speechText is undefined

我的 javascript 处理程序使用对 API 的调用和 returns 分配给常量 speechText 的文本字符串(正文)。但是正如您在日志结果中看到的那样,最初 speechText 会抛出一个错误,因为它没有定义,但是当 request.get 方法被调用时,它似乎返回了正确的结果。

这是异步问题吗?如果是,我该如何重组代码以在需要时提供结果(正文)?我认为代码在 API 调用返回结果之前执行 return handlerInput.responseBuilder

这是我的代码:

const NumberIntentHandler = {

    canHandle(handlerInput) {
        return handlerInput.requestEnvelope.request.type === 'IntentRequest'
          && handlerInput.requestEnvelope.request.intent.name === 'NumberIntent';
    },

     handle(handlerInput) {
        console.log('At NumberIntentHandler');

        let slotNum = handlerInput.requestEnvelope.request.intent.slots.number.value;

        const url = `http://numbersapi.com/${slotNum}`;
        console.log('url: ', url);

        request.get(url, (error, response, body) => {
            console.log('error: ', error); // Print the error if one occurred
            console.log('statusCode: ', response && response.statusCode); // Print the response status code if a response was received
            console.log('body: ', body); // Print the body 

            const speechText = body;
            console.log('speechText: ', speechText); // Print the speechText     
        });

        return handlerInput.responseBuilder
          .speak(speechText)
          .withSimpleCard('Here is your fact: ', speechText) 
          .getResponse();
     }
};

request 是一个异步事件。因此,在请求发生时,您的 return 语句已被评估,因此 speechText 尚未设置。

此外,您在函数内部定义了 speechText,这意味着它也不在 return 的范围内