我一直在学习Codecademy的alexa技能课程,并且lambda函数的语法突然改变了。以下两个lambda函数之间有什么区别,我应该使用哪个?
我已经在Codecademy论坛上提出了要求,但没有回复。
// First way
const LaunchRequestHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'LaunchRequest';
},
handle(handlerInput) {
return handlerInput.responseBuilder
.speak("Hello, Welcome to Codecademy. What is your name?")
.reprompt("Welcome. What is your name?")
.getResponse();
},
};
...
exports.handler = skillBuilder
.addRequestHandlers(
LaunchRequestHandler,
...
)
.lambda();
// Second way
var handlers = {
'LaunchRequest': function() {
this.response
.speak("Hello, Welcome to Codecademy. What is your name?")
.listen("Welcome. What is your name?");
this.emit(':responseReady');
},
...
}
...
exports.handler = function(event, context, callback){
var alexa = Alexa.handler(event, context);
alexa.registerHandlers(handlers);
alexa.execute();
};
两种版本都能正常运行,但我大多看到的是第一种方式编写的代码,而课程则采用第二种格式。
答案 0 :(得分:1)
第一个使用alexa-sdk v2编写,而第二个使用alexa-sdk v1编写。它们的工作原理相同,唯一的区别是代码的结构。 v2在选择处理程序的方式上使用了一些不同的方法,并使用canHandle方法来做到这一点。
如果我愿意成为您,那么我会使用v2进行工作并建立自己的技能,因为v2较新,它将支持最新功能,并且在我看来,它比v1更好的结构和灵活性。