【发布时间】:2018-05-14 09:19:15
【问题描述】:
我有这个代码:
function createPlan(amount) {
return stripe.plans.create({
product: 'DigitLead website evaluation tool',
nickname: 'DigitLead website evaluation tool monthly charge',
currency: 'cad',
interval: 'month',
amount: amount,
});
}
var product = stripe.products.create({
name: 'DigitLead website evaluation tool monthly charge',
type: 'service',
});
console.log(time);
if (time === '1') {
var amount = 1499;
var days = 30;
var plan = createPlan(1499);
}
else if (time === '3') {
amount = 999 * 3;
days = 90;
plan = createPlan(999);
}
plan.then(p => console.log("p " + p));
if (typeof req.user.stripeId === undefined) {
var customer = stripe.customers.create({
email: req.user.username,
source: req.body.stripeToken,
});
}
看起来不错,但问题是,这段代码是异步的。所以当我尝试使用product 变量创建plan 时,它并不存在。
我可以使用then 链接,但它会非常混乱。我试图通过像这样添加await 来完成它:
var product = stripe.products.create({
name: 'DigitLead website evaluation tool monthly charge',
type: 'service',
});
,但是节点刚刚说:
/home/iron/Documents/Projects/digitLead/routes/payment.js:46
var product = await stripe.products.create({
^^^^^
SyntaxError: await is only valid in async function
我不想使用回调地狱,所以我真的不知道该怎么做。在普通代码中,我只需编写函数async 并返回一个承诺。在这里,我使用的是Stripe API,所以我无法真正编辑任何内容。
【问题讨论】:
-
"node just said nope",似乎是一个很好的错误信息。如果你具体说明了什么,也许我们可以帮助解决这个问题。
-
这是一个简单的语法错误。我会把它添加到帖子中
-
@Adriani6 我编辑了帖子。
-
你的错误信息说明了一切......
-
嗯,是的,但问题是,我怎样才能绕过它
标签: javascript node.js express asynchronous stripe-payments