我有一系列客户,我创建了一个队列来为每个客户收费。它向第一个客户收费,但不会将下一个客户推到队列中。我错过了什么?以下是我的代码。
let q = async.queue(async(customer, callback) =>{
let r = await stripe.charges.create({
amount: customer.amount ,
currency: "usd",
customer: customer.customerId,
source: customer.token
}, {
idempotency_key: customer.uuid
});
},1)
async.forEach(customers, async(customer, callback)=> {
q.push(customer, function(err){
if(err){
console.log(err,"errr==========")
}
})
})
答案 0 :(得分:0)
你在这里将async / await与回调混合在一起,而你永远不会调用async.forEach()
回调。
let q = async.queue((customer, callback) => {
stripe.charges.create({
amount: customer.amount ,
currency: "usd",
customer: customer.customerId,
source: customer.token
}, {
idempotency_key: customer.uuid
}, callback);
},1)
customers.forEach((customer) => {
q.push(customer, (err, cus) => {
if(err){
console.log(err,"errr==========")
}
// Do whatever
})
});
您还要确保customer.token
是卡ID,而不是令牌ID;如果它是您用来创建客户的令牌ID,那么您不需要它,如果它是新的卡令牌,您需要先更新客户或将其添加到客户。