0
我正在研究在AWS Lambda中運行的Node中的Alexa技能,並且在發出事件時無法獲得執行回調的問題。 Alexa的技能,工具包Node.js的README演示傳遞一個回調函數的事件處理程序,並建議使用箭頭功能保護方面:將回調傳遞給事件處理程序
this.emit('JustRight',() => {
this.emit(':ask', guessNum.toString() + 'is correct! Would you like to play a new game?',
'Say yes to start a new game, or no to end the game.');
});
我試圖做同樣的,但發現我的回調永遠不會被執行。我以爲這是因爲AWS LAMBDA限制爲節點4.3.2,箭頭功能不可用,所以我想通過這個背景下回回調的老式方法:
在新建會話處理程序:
if(!account_id) {
console.log('Access token:' + accessToken);
this.emit('getAccount', accessToken, function (retrieved_id) {
console.log('account id in callback: ' + retrieved_id);
this.emit('welcome');
});
}
在事件處理程序:
accountHandler = {
'getAccount': function (accessToken, cb) {
console.log('fetching account id');
var client = thirdparty.getClient(accessToken);
var r = client.getAccountForToken(client);
r.then(function (data) {
console.log('got it:' + data);
this.attributes['account_id'] = data;
cb.call(this, data);
}).catch(function (err) {
this.emit('handleApiError', err);
});
},
}
我可以看到我成功取回賬號ID,在日誌中,但拉姆達沒有錯誤,沒有調用我的回調函數執行。我試圖找出在Promise'then'函數內是否存在調用回調的問題,或者如果有其他事情正在進行。