我正在学习javascript和构建Alexa技能的基础知识。亚马逊提供了一个简单的HelloWorld Alexa技能:https://github.com/amzn/alexa-skills-kit-js/blob/master/samples/helloWorld/src/index.js
我对这个功能有两个问题。
// Create the handler that responds to the Alexa Request.
exports.handler = function (event, context) {
// Create an instance of the HelloWorld skill.
var helloWorld = new HelloWorld();
helloWorld.execute(event, context);
};
答案 0 :(得分:1)
是的,分配给exports.handler的函数大致相当于Java主例程。每次调用技能时都会执行此函数内的代码。
它之外的代码也会运行,但只有在Lambda首次初始化时才会运行,除非你的技能使用非常非常繁重,否则这种情况很少发生。在下面的示例中:
var globalCount = 0;
exports.handler = function (event, context) {
var localCount = 0;
// Create an instance of the HelloWorld skill.
var helloWorld = new HelloWorld();
helloWorld.execute(event, context);
console.log("GlobalCount: " + globalCount + " LocalCount: " + localCount);
localCount++;
globalCount++;
};
您将看到globalCount随着对技能的每次调用而持续递增 - 这意味着只调用功能代码。 localCount同时每次都重新初始化。所以,输出将是:
GlobalCount: 0 LocalCount: 0
GlobalCount: 1 LocalCount: 0
GlobalCount: 2 LocalCount: 0
希望澄清事情!