Всем привет. У меня на странице около 10 графиков со статистикой, так получилось из-за структуры проекта и не оптимизированной БД что одним запросом не получится для всех графиков забрать данные. Приходится городить цикл в котором собираю массив с этим блоками-графиками и блок в html выглядит примерно так:
<div id="chart-linear-schedule-for-operators"
data-type="chart"
data-chart="line"
data-url="#chart-linear-schedule-for-operators"
></div>
и получается у меня примерно такой код в js:
$(document).ready(function () {
let chartBlockList = $('[data-type="chart"]');
if (chartBlockList.length) {
for (let i = 0; i < chartBlockList.length; i++) {
$.ajax({
url: data.url,
type: "POST",
dataType: 'json',
data: {
data: JSON.stringify({item: i})
},
success: function(resp) {
if (typeof resp['data'] !== "undefined") {
if (resp['data'].length > 0) {
switch (data.type) {
case 'line':
DrawLineChart(chartBlockList[i].id, resp['data_pie_hot_offer']);
break;
case 'pie':
DrawPieChart(chartBlockList[i].id, resp['data_pie_hot_offer']);
break;
}
} else {
chartBlockList[i].innerHTML = '<div class="empty">No data<div>';
}
}
}
});
}
}
});
И вот в switch переменной i нет, вот как это грамотно делается? Вроде промисами, но попробовал, не получилось отсылаю (приходится делать костыль) я этот i беру и тоже на сервер отправляю и также с сервера его возвращаю, но я знаю что это не гуд и где то что то я делаю неправильно. Ткните носом пожалуйста как это делается по простому?