首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >因为异步而导致函数不能完成的问题?

因为异步而导致函数不能完成的问题?
EN

Stack Overflow用户
提问于 2020-04-16 06:24:45
回答 1查看 24关注 0票数 0

如果我把注释块中的代码放在if语句中,它就不能工作。

我认为主要的问题是它恰好在return语句之前,那么我如何确保它在return语句启动之前完成运行。

我试过let {cool} = await ....,但没有成功

其目的是将代码从上面复制并粘贴到if语句内部。

代码语言:javascript
复制
var AWS = require("aws-sdk");
AWS.config.region = "us-east-1";
var lambda = new AWS.Lambda();

exports.handler = async (event) => {
  ////----------------------------THIS CODE HERE WORKS-------------------------------------------///////
  var PayloadObj = {
    amount: String(event["amount"]),
    email: String(event["email"]),
  };

  var Payload = JSON.stringify(PayloadObj);
  var params = {
    FunctionName: "lambda-2", // the lambda function we are going to invoke
    Payload: Payload,
  };
  let { cool } = lambda.invoke(params, function (err, data) {
    if (err) {
      console.log(err);
    } else {
      console.log(data.Payload);
    }
  });

  //-------------------------------------END of this CODE --------------------------------------////

  // TODO implement

  const stripe = require("stripe")("sk_test");

  var amount = event["amount"];
  var token = event["token"];

  let { status } = await stripe.charges.create({
    amount: amount * 100,
    currency: "usd",
    description: amount,
    source: token,
  });

  if (status === "succeeded") {
    //--------------------------------Same code here!-------------------------------///
    // same code from above
    //---------------------------Does not work!!------------------------------------------//

    const response = {
      statusCode: 200,
      body: JSON.stringify(status),
    };
    return response;
  } else {
    const response = {
      statusCode: 402,
      body: JSON.stringify("Payment Failed"),
    };
    return response;
  }
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-16 06:31:58

如果您使用的是await,则不需要使用回调函数来显示数据和错误。您可以只使用try-catch块。

代码语言:javascript
复制
var PayloadObj = {
  amount: String(event["amount"]),
  email: String(event["email"]),
};

var Payload = JSON.stringify(PayloadObj);
var params = {
  FunctionName: "lambda-2", // the lambda function we are going to invoke
  InvocationType: "RequestResponse", // InvocationType: "Event",
  Payload: Payload,
};

try{
  const data = await lambda.invoke(params).promise();
  console.log(data.payload);
}catch(err){
  console.log(err);
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61239658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档