Node.js 如何在AWS SDK Javascript中使用Async和Wait
我正在使用KMS库使用AWS SDK。我想使用async和Wait代替回调Node.js 如何在AWS SDK Javascript中使用Async和Wait,node.js,aws-sdk,aws-kms,Node.js,Aws Sdk,Aws Kms,我正在使用KMS库使用AWS SDK。我想使用async和Wait代替回调 import AWS, { KMS } from "aws-sdk"; this.kms = new AWS.KMS(); const key = await this.kms.generateDataKey(); 但是,当包装在异步函数中时,这不起作用 在这里如何使用async和await?await需要一个承诺。返回承诺,而不是承诺AWS.Request是EventEmitter(或多或少),但有一个可以使用的
import AWS, { KMS } from "aws-sdk";
this.kms = new AWS.KMS();
const key = await this.kms.generateDataKey();
但是,当包装在异步函数中时,这不起作用
在这里如何使用async和await?
await
需要一个承诺。返回承诺,而不是承诺
AWS.Request
是EventEmitter
(或多或少),但有一个可以使用的方法
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()
}());
如果您使用的aws sdk版本>2.x,则可以使用chain.promise()
函数将aws.Request
转换为promise。
对于您的情况:
try {
let key = await kms.generateDataKey().promise();
} catch (e) {
console.log(e);
}
键
是一个KMS.Types.GenerateDataKeyResponse
——回调的第二个参数(回调样式)
e
是一个AWSError
——回调函数的第一个参数
注意:await
表达式只允许在异步函数中使用await
需要承诺;这需要回调。如何在try语句之外访问key
?@mbspark您可以首先在try
块之外创建key
变量。但是,为什么?我想在程序的其他地方使用键。不过,我最终还是以一种不同的方式弄明白了我想做什么。。。。