Я очень новичок в асинхронном программировании, поэтому простите меня за непонимание, но в настоящее время я создаю навык Alexa, который вызывает API частной парковки. Вы можете вызвать этот API, и он даст вам ближайшие парковочные места.
const getParkingSpots_Handler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'IntentRequest' && request.intent.name === 'getParkingSpots' ;
},
handle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
const responseBuilder = handlerInput.responseBuilder;
let sessionAttributes = handlerInput.attributesManager.getSessionAttributes();
let requestData = {
// I can't show this sorry
}
let options = {
// I can't show this sorry
};
// Call to the API
const postAxios = async () => {
try {
const response = await axios.post(API_URL, requestData, options);
return response.data.result;
} catch(error) {
console.log(error);
}
};
// Another function. This is where I use the data from the API response. I intent to add some code here that only picks out a number of results, sorts it by price etc. etc.
const useTheResult = async () => {
const result = await postAxios();
console.log('Response from the API:', result);
};
// We defined the functions above, now we need to execute them
useTheResult();
// This is what we will refer to the 'problem code'.
let say = `Hello from confidientialCompany! You can park...`;
return responseBuilder
.speak(say)
.reprompt('try again, ' + say)
.getResponse();
},
};
В идеале, когда я добавляю код для изменения ответа в useTheResult
, я хочу, чтобы код проблемы также находился внутри useTheResult
... почему? Потому что, как только я выберу нужные мне данные и изменю их, я попытаюсь превратить say в «удобочитаемое для Alexa» предложение, например:
let say = `Hello from confidentialCompany! You can park on ${roadName1}, ${roadName2} and ${roadName3}. Prices start from ${startingPrice} pounds.`
Если я сделаю это прямо сейчас, я получу ошибку при тестировании в консоли Alexa. Я понятия не имею, что делать дальше, и мне кажется, что я застряну в бесконечном цикле асинхронных функций.