首页 > 解决方案 > 如何使用 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 的类型的答案。

谢谢!

标签: javascripttypescriptamazon-web-servicesaws-sdkamazon-athena

解决方案


在适用于 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


推荐阅读