У меня есть множество клиентов, из которых я создал очередь для оплаты каждого из них. Он взимает плату с первого клиента, но не помещает следующего в очередь. Что мне не хватает, пожалуйста? Ниже мой код.
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.info(err,"errr========= = ")
}
})
})



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Здесь вы смешиваете 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.info(err,"errr========= = ")
}
// Do whatever
})
});
Вы также хотите убедиться, что customer.token является идентификатором карты, а не идентификатором токена; если это идентификатор токена, который вы использовали для создания клиента, он вам не нужен, а если это новый токен карты, вам нужно либо сначала обновить клиента, либо добавить его в клиента.