0
我一直在努力嘗試輸出我的承諾鏈的成功/錯誤。在AWS Lambda處理程序內部使用回調
我鏈接在一起的承諾像這樣
exports.handler = function(event, context, callback) {
Q.allSettled(init()).then(function (result) {
requestValid(event.queryStringParameters)
.then(isDuplicate)
.then(process)
.then(insertData)
.then(displayResponse)
.catch(function (error) {
// Handle any error from all above steps
console.error(
'Error: ' + error
);
callback({
statusCode: 500,
body: JSON.stringify({
message: error
}, null)
});
})
.done(function() {
console.log(
'Script Finished'
);
callback(null, {
statusCode: 200,
body: JSON.stringify({
message: 'Done'
})
});
});
});
};
我呼籲承諾的內成功上失敗,Q.defer.resolve(success_message)
。如果這些承諾中的任何一個失敗,錯誤將被捕獲到.catch(function (error) {
。
這一切都很好,但我如何將這些數據返回給處理程序的回調?
的是我想做的事,但沒怎麼/在哪裏把它,因爲承諾的例子...
exports.handler = function (event, context, callback) {
let response = {
statusCode: 200,
body: JSON.stringify('some success or error')
};
// Return all of this back to the caller (aws lambda)
callback(null, response);
};
預先感謝您..
似乎您正在使用AWS API Gateway進行通訊..無論如何,請嘗試使用箭頭函數替換所有函數,並讓我知道它是否可行! –
你能否澄清你的問題? 首先,爲什麼即使發生錯誤,您仍然使用'null'值調用回調函數? 實際上這個函數的當前行爲是什麼,它只是通過超時或什麼完成的? –
@ArtemArkhipov我想在使用promise時正確使用回調函數。我已經更新了這個。我的印象是,使用哪個參數並不重要,因爲我只想將此回調函數返回給lambda。我不知道他們的表現與衆不同,儘管一方面出錯而另一方面取得成功。 –