以前使用try and catch方法的功能
const chargeCard = async (
stripeToken,
amount,
currency,
phoneNumber,
animalName,
numberOfHorses
) => {
try {
let charge;
charge = await to(
stripe.charges.create({
amount: amount.replace('.', ''),
currency: currency,
description: `Charge from ${phoneNumber} for ${animalName}`,
source: stripeToken,
metadata: {
phoneNumber,
animalName,
numberOfHorses
}
})
);
return charge;
} catch (error) {
console.log(error);
logger.error(error);
return error;
}
};
但是现在我想出了正确的方法来获取错误,我需要在函数
中添加回调并承诺var result = stripe.charges.create({
...data...
}, function (err, charge) { // <-- callback
...
}).then(function(charge) { // <-- promise
...
})
具有以下功能
const chargeCard = async (
stripeToken,
amount,
currency,
phoneNumber,
animalName,
numberOfHorses
) => {
try {
const charge = await
stripe.charges.create({
amount: amount.replace('.', ''),
currency: currency,
description: `Charge from ${phoneNumber} for ${animalName}`,
source: stripeToken,
metadata: {
phoneNumber,
animalName,
numberOfHorses
}
}, (error, charge) => {
console.log(error);
return error;
}).then(charge => charge);
// return charge;
} catch (error) {
console.log(error);
logger.error(error);
return error;
}
}
当我登录控制台时,它会收到所有错误,但不会通过调用此chargeCard函数返回错误。 任何帮助将不胜感激。
谢谢
答案 0 :(得分:0)
您可以试试吗?它应该工作
EventPageIndex
答案 1 :(得分:0)
这是我创建服务的方式:
let paymentResult = undefined
try {
paymentResult = await stripe.charges.create({
amount: defaultAmount,
currency,
source: paymentInfo.id,
})
} catch (error) {
logger.error(`Payment error: \nHEADER:${JSON.stringify(requestHeader)} \nSTRIPE ERROR:${JSON.stringify(error)}`)
paymentResult = { error: error.type }
}
return paymentResult
您可以看到不需要回调,因为仅使用async / await和try / catch结构即可返回成功有效载荷或错误。