首页 > 解决方案 > Lambda:node.js 不等到承诺返回

问题描述

我写了一个 lambda 函数,但不幸的是,我不确定它为什么不等待承诺结果。你介意帮我弄清楚是什么问题吗?

exports.handler = async (event) => {
  let request = new Request(event);
  console.log(`request---> ${JSON.stringify(request)}`);
  try {
    let props = { ...request.payload };
    let poolData = Helper.getPoolData();
    console.log(`props---> ${JSON.stringify(props)} \npoolData---> ${JSON.stringify(poolData)}`);
    let profileData = profile(poolData, props);
    console.log(`before await...`);
    let data = await profileData;
    console.log(`after await...`);
    return request.reply(data);
  } catch (err) {  
    console.log(`ERROR HAPPENED ------profile_get.js-----> ${JSON.stringify(err)}`);
    return request.reply(Boomer(err));
  }
};

我的个人资料功能如下:

static async profile(poolData, props) {
    console.log(`inside profile--->`);
    const cognitoUser = await Helper.getCognitoUser(poolData, props);
    console.log(`cognitoUser---> ${JSON.stringify(cognitoUser)}`);
    return new Promise((resolve, reject) => {
      let next = (err, res) => {
        if (err) {
          reject(err);
        } else {
          resolve(res);
        }
      };
      console.log(`inside promise`);

      cognitoUser.getUserAttributes(next);
    });
  }

我在 Cloudwatch 中的日志详细信息如下:

2019-12-25T02:10:46.149+08:00
START RequestId: 9f6a0e99-543c-4e1c-b41d-af9dba32739d Version: $LATEST
2019-12-25T02:10:46.178+08:00
2019-12-24T18:10:46.152Z 9f6a0e99-543c-4e1c-b41d-af9dba32739d INFO request---> {"headers":{"Accept":"*/*","AcceptEn....l}
2019-12-25T02:10:46.178+08:00
2019-12-24T18:10:46.178Z 9f6a0e99-543c-4e1c-b41d-af9dba32739d INFO props---> {"Accept":"*/*","AcceptEncod...,"XForwardedProto":"https"} poolData---> {"UserPoolId":"eu-west-asdasda","ClientId":"asdasd","Paranoia":"7"}
2019-12-25T02:10:46.178+08:00
2019-12-24T18:10:46.178Z 9f6a0e99-543c-4e1c-b41d-af9dba32739d INFO inside profile--->
2019-12-25T02:10:46.198+08:00
2019-12-24T18:10:46.179Z 9f6a0e99-543c-4e1c-b41d-af9dba32739d INFO before await...
2019-12-25T02:10:46.198+08:00
2019-12-24T18:10:46.198Z 9f6a0e99-543c-4e1c-b41d-af9dba32739d INFO ERROR HAPPENED ------profile_get.js-----> {}
2019-12-25T02:10:46.198+08:00
2019-12-24T18:10:46.198Z 9f6a0e99-543c-4e1c-b41d-af9dba32739d INFO ERROR HAPPENED ------error.js-----> {}
2019-12-25T02:10:46.219+08:00
END RequestId: 9f6a0e99-543c-4e1c-b41d-af9dba32739d
2019-12-25T02:10:46.219+08:00
REPORT RequestId: 9f6a0e99-543c-4e1c-b41d-af9dba32739d Duration: 69.30 ms Billed Duration: 100 ms Memory Size: 128 MB M

我正在使用 Node.js 12.x。

标签: node.jsamazon-web-servicespromiseaws-lambda

解决方案


推荐阅读