如何知道操作何时完成-回调?

时间:2018-11-18 21:16:33

标签: javascript callback

我想知道操作何时完成-这是一个迭代,其中我们不知道要迭代的列表大小(可以是任意长度)。

这是我的代码:

var array = [];

stripe.charges.list().autoPagingEach(function(charge) {

  var post  = {
    chargeId: charge.id,
    customerId: charge.customer,
    sourceId:charge.source.id,
    amount:(charge.amount/100).toFixed(2),
    description:charge.description,
    dateAndTime:moment(charge.created*1000).format('YYYY-MM-DD HH:mm:ss'),
    chargeStatus:charge.status,
    failureMessage:charge.failure_message
  };

  array.push(post)

});

一旦迭代完成,我怎么console.log(array.length)

我已经看到一些示例,这些示例使用带有Done()的回调,这似乎是我要追求的目标-但我不知道如何将其纳入代码中。

1 个答案:

答案 0 :(得分:0)

根据Stripe的文档,stripe.charges.list()返回一个对象,其中包含data属性中的费用列表。

您可以这样做:

let charges = stripe.charges.list();
let pending_charges = charges.data.length;

charges.autoPagingEach(function(charge) {
    // do your thing

    pending_charges -= 1;
    if ( pending_charges == 0 ) {
        // call a function after the last charge has been processed
        // and be careful with failing autoPagingEach() executions
    }
});