Javascript 使用AWS sdk时如何在AWS Lambda中创建异步/等待函数
我正在使用AWS lambda从cloudwatch metric获取一些数据,下面是我在lambda中的代码Javascript 使用AWS sdk时如何在AWS Lambda中创建异步/等待函数,javascript,promise,aws-lambda,aws-sdk,Javascript,Promise,Aws Lambda,Aws Sdk,我正在使用AWS lambda从cloudwatch metric获取一些数据,下面是我在lambda中的代码 var AWS = require('aws-sdk'); AWS.config.update({region: 'ap-northeast-1'}); var cloudwatch = new AWS.CloudWatch({apiVersion: '2010-08-01'}); exports.handler = async function(event, context
var AWS = require('aws-sdk');
AWS.config.update({region: 'ap-northeast-1'});
var cloudwatch = new AWS.CloudWatch({apiVersion: '2010-08-01'});
exports.handler = async function(event, context) {
console.log('==== start ====');
const connection_params = {
// params
};
cloudwatch.getMetricStatistics(connection_params, function(err, data) {
if (err){
console.log(err, err.stack);
} else {
console.log(data);
active_connection = data.Datapoints[0].Average.toFixed(2);
}
console.log(`DDDDDDD ${active_connection}`);
});
console.log('AAAA');
};
我总是先得到'AAAA',然后得到'DDDD${active\u connection}'
但我想要的是先得到'DDDD${active_connection}',然后是'AAAA'
我试着用
cloudwatch.getMetricStatistics(connection_params).then(() => {})
但是展示
getMetricStatistics(…)。则不是一个函数
您可以使用util\promisify
您可以使用util\promisify
试着像这样编写代码
然后
async/await
试着像这样编写代码
然后
async/await
const util = require("util");
const cloudwatch = new AWS.CloudWatch();
const getMetricStatistics = util.promisify(cloudwatch.getMetricStatistics.bind(cloudwatch));
getMetricStatistics(connection_params).then(() => {})
const x = cloudwatch.getMetricStatistics(connection_params).promise();
x.then((response) => do something);
const x = await cloudwatch.getMetricStatistics(connection_params).promise();