使用来自aysnc Javascript http请求的数据?(aws无服务器)

使用来自aysnc Javascript http请求的数据?(aws无服务器),javascript,node.js,asynchronous,aws-lambda,serverless,Javascript,Node.js,Asynchronous,Aws Lambda,Serverless,我正在使用nodejs无服务器模块创建lambda aws函数 'use strict'; const request = require('request'); const options = { url: 'https://api.mysportsfeeds.com/v2.0/pull/nfl/2018-regular/games.json', method: 'GET', headers: { "Authorization": "Basic " + Buffer.fro

我正在使用nodejs无服务器模块创建lambda aws函数

'use strict';
const request = require('request');
const options = {
  url: 'https://api.mysportsfeeds.com/v2.0/pull/nfl/2018-regular/games.json',
  method: 'GET',
  headers: {
    "Authorization": "Basic " + Buffer.from("1da103" 
+ ":" + "MYSPORTSFEEDS").toString('base64')
  }
}

//this is automatically called by aws
module.exports.hello = async (event, context) => {
  let result;
  request.get(options, (error, response, body) => {
    result = JSON.parse(body).lastUpdatedOn; //never happens cuz of async
  });
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: 'Go Serverless v1.0! Your function executed successfully!',
      input: result,
    }),
  };
};

我遇到的问题是,我无法返回get请求的输出,因为在异步get请求中对结果变量的赋值发生在return语句之后。我认为我无法将外部函数转换为get请求的回调函数。如何解决这个问题?

另一种方法是提取请求逻辑并将其放入新函数中

'use strict';
const request = require('request');
const options = {
  url: 'https://api.mysportsfeeds.com/v2.0/pull/nfl/2018-regular/games.json',
  method: 'GET',
  headers: {
    "Authorization": "Basic " + Buffer.from("1da103" 
+ ":" + "MYSPORTSFEEDS").toString('base64')
  }
}

//this is automatically called by aws
module.exports.hello = async (event, context) => {
  let result;
  request.get(options, (error, response, body) => {
    result = JSON.parse(body).lastUpdatedOn; //never happens cuz of async
  });
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: 'Go Serverless v1.0! Your function executed successfully!',
      input: result,
    }),
  };
};
请记住,您需要捕获任何错误,因此请使用try-catch块来执行此操作