Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用AWS sdk时如何在AWS Lambda中创建异步/等待函数_Javascript_Promise_Aws Lambda_Aws Sdk - Fatal编程技术网

Javascript 使用AWS sdk时如何在AWS 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

我正在使用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) {
    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();