gpt4 book ai didi

javascript - 由于异步而导致函数未完成的问题?

转载 作者:行者123 更新时间:2023-12-02 21:05:19 24 4
gpt4 key购买 nike

如果我将注释 block 中的代码放入 if 语句中,则该代码将不起作用。

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

我尝试过 let {cool} = wait .... 但没有成功

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

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;
}
};

最佳答案

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

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);
}

关于javascript - 由于异步而导致函数未完成的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61239658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com