Элементы массива не помещаются в async.queue - PullRequest
0 голосов
/ 29 мая 2018

У меня есть массив клиентов, из которых я создал очередь для взимания платы с каждого из них.Он заряжает первого клиента, но не подталкивает следующего клиента в очередь.Что мне не хватает, пожалуйста?Ниже мой код.

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==========")
        }
    })
 }) 

1 Ответ

0 голосов
/ 29 мая 2018

Вы смешиваете здесь асинхронное / ожидание с обратными вызовами и никогда не вызываете обратный вызов 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 является идентификатором карты,не идентификатор токена;если это идентификатор токена, который вы использовали для создания клиента, то он вам не нужен, а если это новый токен карты, вам нужно либо сначала обновить клиента, либо добавить его к клиенту.

...