我正在使用AWS Lambda开发我的第一个Alexa技能。 我遇到的挑战是Lambda函数在所有同步函数运行之前完成。 我在下面使用一个例子(摘自here) 函数a()调用B()(我认为默认情况下是异步调用) 当我测试我的功能有时我只得到输出 'A已完成' 和函数返回而不执行B(),C(),D()
我从GetUpdateIntent调用A()。我读过几篇建议在回调中使用context.done()的帖子 确保回调完成。我无法遵循如何实现这一目标。 我喜欢在lambda函数完成之前完成所有的回调和异步调用。
var A = function() {
return new Promise(function(resolve, reject) {
var result = 'A is done'
console.log(result)
resolve(result);
})
}
var B = function() {
return new Promise(function(resolve, reject) {
var result = 'B is done'
setTimeout(function() {
console.log(result)
resolve(result);
}, 2000)
global_context.done();
})
}
var C = function() {
return new Promise(function(resolve, reject) {
var result = 'C is done'
console.log(result)
resolve(result);
})
}
var D = function() {
return new Promise(function(resolve, reject) {
var result = 'D is done'
console.log(result)
resolve(result);
})
}
A()
.then(function(result) {
return B();
})
.then(C)
.then(D)
.then(console.log("All done"));
Example.prototype.intentHandlers = {
GetUpdateIntent: function(intent, session, response){
A();
},
};
exports.handler = function(event, context) {
var skill = new Example();
skill.execute(event, context);
};
答案 0 :(得分:1)
您无法在GetUpdateIntent
功能中调用其余功能。您需要像设置示例类