首先,你应该知道我有嵌套$.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
,毕竟tr
由ajax
.