javascript - 如何使用 async/await 调用 AWS 开发工具包的 Athena API?
问题描述
AWS 开发工具包的 Athena API 具有具有此签名的函数:
startQueryExecution(params: Athena.Types.StartQueryExecutionInput, callback?: (err: AWSError, data: Athena.Types.StartQueryExecutionOutput) => void): Request<Athena.Types.StartQueryExecutionOutput, AWSError>;
这使用回调(第二个参数),所以我必须这样称呼它:
athenaAPI.startQueryExecution(params, (err, data) => {...});
我更喜欢这样称呼它:
const result = await startQueryExecution(params);
我怎样才能转换这个函数(也许使用节点的promisify,但我不在乎如何)使用promises而不是回调?
我知道我输入的主要是无类型的 javascript,但我更喜欢使用带有 typescript 的类型的答案。
谢谢!
解决方案
在适用于 JavaScript 的 AWS 开发工具包中,您可以添加.promise()
到任何 API 调用以获得承诺:
const response = await athenaAPI.startQueryExecution(params).promise()
您可以在此处阅读更多相关信息:https ://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/using-promises.html
推荐阅读
- ios - 层删除swift 4
- git - Jenkins- 定期投票和参数化构建
- unit-testing - 使用 groovy.mock.interceptor 检查输入参数
- c# - 使用 C# 在 Azure 中审核 HTTP 调用的日志记录
- php - 学说:多重inversedBy关系
- sql - 为什么要在字段上使用 LEFT JOIN,然后在 WHERE 子句中将其过滤掉?
- git - 如何通过来自 Bitbucket Pipelines 的 cURL 调用 Plesk Git 扩展 webhook?
- javascript - 如何将 SSJS 数组转换为 CSJS
- angular - 标头在 Angular 7 路由器上消失
- python - 使用 selenium 删除容器中的元素