Я новичок в обещаниях, async / await и Alexa / lambda, так что терпите меня.
Моя функция возвращается до возврата данных. У меня была похожая проблема, когда я получал ошибку, но с тех пор я немного отредактировал свою функцию и поэтому задавал новый вопрос. Теперь я больше не получаю сообщение об ошибке, но вместо этого сначала возвращаются мои данные, затем выполняется обещание.
Я попытался переписать обещание / функцию после прочтения множества форумов разработчиков SO, google и amazon. Кажется, у меня ничего не работает.
const IntentRequest = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest';
},
async handle(handlerInput) {
const { requestEnvelope, serviceClientFactory, responseBuilder } = handlerInput;
let responseData, promise;
checkAuthenticationStatus(handlerInput,function(json){
console.log('waited!')
if(json.error) {
return handlerInput.responseBuilder.speak(messages.NO_ACCESS).withSimpleCard('Unauthorized Request', messages.NO_ACCESS).getResponse();
} else if(json.noerror && json.noerror.okay == 'true'){
console.log('starting to get intent data')
const url = new URL(json.noerror.okay.path);
promise = new Promise((resolve, reject) => {
console.log('start promise')
return httpsGetIntent(handlerInput, url).then((resultData) => {
console.log(resultData)
responseData = resultData;
resolve(responseData)
console.log('inside promise, no error, prior to return data')
})
}).then((result) => { console.log('result', result)})
return handlerInput.responseBuilder.speak('Test').getResponse();
}
});
console.log('response data', responseData)
let result = await promise;
return result;
},
};
Из моих многочисленных console.logs (), добавленных для отладки, они печатаются следующим образом:
- «данные ответа»
- «Ждал!»
- «начать получать данные о намерениях»
- «Начни обещание»
- resultData
- «внутреннее обещание, без ошибок, до возврата данных»