Kay*_*Kay 40 node.js aws-sdk aws-kms
我正在使用KMS库使用AWS SDK.我想使用async和await而不是回调.
import AWS, { KMS } from "aws-sdk";
this.kms = new AWS.KMS();
const key = await this.kms.generateDataKey();
Run Code Online (Sandbox Code Playgroud)
但是,当包含在异步函数中时,这不起作用.
我怎么能在这里使用async并等待?
hoa*_*gdv 71
如果您使用版本> 2.x的aws-sdk,则可以aws.Request使用链.promise()函数将a 转换为promise .对于你的情况:
try {
let key = await kms.generateDataKey().promise();
} catch (e) {
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
这key是一个KMS.Types.GenerateDataKeyResponse- 回调的第一个参数(回调样式).
这e是一个AWSError- 回调函数的第二个参数
注意:await表达式只允许在异步函数中使用
await需要一个Promise。 generateDataKey()传回AWS.Request,而不是Promise。 AWS.Request是EventEmitters(或多或少)但有一种promise可以使用的方法。
import AWS, {
KMS
} from "aws-sdk";
(async function() {
const kms = new AWS.KMS();
const keyReq = kms.generateDataKey()
const key = await keyReq.promise();
// Or just:
// const key = await kms.generateDataKey().promise()
}());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15088 次 |
| 最近记录: |