我在 aws lambda 中调用 axios post 方法。大多数时候 lambda 不返回任何结果。日志显示以下结果
START RequestId:ac92d268-d212-4b80-a06c-927922fcf1d5 版本:$LATEST END RequestId:ac92d268-d212-4b80-a06c-927922fcf1d5
但有时 lambda 会返回预期的结果。看起来 lambda 没有等待 axios 完成。下面是 lambda 代码。
var axios = require('axios')
exports.handler = async (event, context,callback) => {
axios.post('https://example.com/testapi/api.asmx/GetNames', {})
.then((res) => {
console.log(JSON.stringify(res.data,null,2))
callback(null,'success');
})
.catch((error) => {
console.error(error)
callback(null,'error');
})
};
Run Code Online (Sandbox Code Playgroud)
Tha*_*ssi 13
您的处理程序是async这意味着它将异步运行并返回一个Promise. 这意味着您的函数在您的代码实际运行之前被终止。
由于axios已经与 Promises 一起工作并且您的方法已经是async,因此您无需进行太多更改。这将解决问题:
const axios = require('axios')
exports.handler = async (event) => {
try {
const res = await axios.post('https://example.com/testapi/api.asmx/GetNames', {})
console.log(res)
return {
statusCode: 200,
body: JSON.stringify(res)
}
} catch (e) {
console.log(e)
return {
statusCode: 400,
body: JSON.stringify(e)
}
}
};
Run Code Online (Sandbox Code Playgroud)
如果您愿意,您可以了解更多有关async/await 的信息。
| 归档时间: |
|
| 查看次数: |
7586 次 |
| 最近记录: |