1

首先,你应该知道我有嵌套$.ajax调用。第一个打印出来table,当它完成后,我在表格中做第二$.ajax个。each <tr>两者都使用async: true.

我这样做是因为我想为最终用户提供一个视图(表格),然后 3<td>必须从其他 URL 加载数据。在这个解释之后:

$.ajax({
  // ...
  complete: function() {
    $('table tbody tr.product').each(function(i) {
      let line = $(this);
      ...
      // set variable
      const data = { ...
      };
      // data values are from prev varaibles
      $.ajax({
        type: 'POST',
        url: URIPOS,
        data: data,
        async: true,
        beforeSend: function() {
          tdMostSales.html('<i class="fa fa-spinner fa-spin fa-1x"></i>');
          tdSubscriptions.html('<i class="fa fa-spinner fa-spin fa-1x"></i>');
          tdGeneral.html('<i class="fa fa-spinner fa-spin fa-1x"></i>');
        },
        success: function(res) {
          const resp = JSON.parse(res);
          const {
            general,
            prevision
          } = resp;
          const {
            total,
            notified
          } = resp.subscription;
          tdMostSales.attr('data-value', prevision)
          tdMostSales.html(`${prevision}`);
          tdSubscriptions.html(`${notified}/${total}`);
          tdGeneral.html(`${general}`);
        },
        complete: function() {
          tdMostSales.blur();
        }
      });

      if (i + 1 === $('table tbody tr.product').length) {
        console.log('finished')
        var options = {
          valueNames: [
            'name',
            'sku',
            'brand',
            'match',
            'profit',
            'profit-rating',
            'sell-rating',
            {
              name: 'pvp',
              attr: 'data-value'
            },
            {
              name: 'demand-forecast',
              attr: 'data-value'
            }
          ],
          listClass: 'product-list-body'
          //pagination : true,
          //page: 20
        };
        var orderedList = new List('generator', options);
        return;
      }
    });
  }
});

但是有了这个,它会在尚未完成时返回,仍在处理一些console.log('finished'),那么如何处理呢?每次完成时可能会回调,但是在哪里执行此操作或如何执行此操作?$.ajax<tr>

我不认为这是一个重复的帖子......因为我不想做出不同ajax然后得到一个response我需要提出一个请求,一旦完成,提出下一个,这一秒必须迭代每个 tr 和对每个请求都发出请求,但异步完成后(无需发出更多请求)return,毕竟trajax.

4

0 回答 0