Привет всем! Подскажите, пожалуйста, стоит такая задача.
У меня есть функция выдачи карт терминалом!
function return_card(nominal, count) {
// Активируем диспенсер
$.post('core/ajax.php', {
'modul': 'dispenser',
'method': 'dispenser_on',
'nominal': nominal
}, function(data) {
if (data.success) {
// Простукиваем текущее устройство
tid_return = setInterval(function() {
console.log(count);
if (count > 0) {
$.post('core/ajax.php', {
'modul': 'order_card',
'method': 'return_card',
'hash': $('#hash').val(),
'nominal': nominal
},
function(data) {
if (data.success) {
console.log(data);
if (data.card) {
$("#modal_window_es_exit").click();
// Выводим сообщение
$('#response').append('<p>Получите карту. Карта номиналом '+nominal+'р выдана.</p>');
// Уменьшаем счетчик
--count;
//console.log(count);
}else{
$("#modal_window_es_exit").click();
getModalWindowES(data.return, 'Внимание');
//$('#response_card').text('');
//$('#response_card').text(data.return);
}
} else {
// Перестаем стучаться
clearInterval(tid_return);
// Выключаем диспенсер
dispenser_off(nominal)
// Выводим сообщение
getModalWindowES('Произошел сбой при обращении к устройству выдачи карт<br><br>' + data.error, 'Ошибка');
}
}, "json")
} else {
// Перестаем стучаться
clearInterval(tid_return);
// Выключаем диспенсер
dispenser_off(nominal)
}
}, 5000)
} else {
getModalWindowES(data.error, 'Ошибка');
dispenser_off(nominal);
}
}, "json")
}
Видов карт много, и для каждой карты свое устройство. Сейчас выдача карт работает через такой способ:
// Выдаем карту 500
if (card_500 != 0) {
return_card(500, card_500);
}
// Выдаем карту 1000
if (card_1000 != 0) {
return_card(1000, card_1000);
}
// Выдаем карту 1500
if (card_1500 != 0) {
return_card(1500, card_1500);
}
// Выдаем карту 3000
if (card_3000 != 0) {
return_card(3000, card_3000);
}
// Выдаем карту 5000
if (card_5000 != 0) {
return_card(5000, card_5000);
}
При таком способе, они конечно вызываются все сразу. Благодаря тому, что устройства разные это работает, но с небольшим багом. При многократном вызове функции, какой то из вызовов не завершает простукивание clearInterval(tid_return); в результате постоянно продолжается обращения к аякс. Вот захотелось это убрать, да и вообще для стабильности было бы хорошо работать с каждым устройством по отдельности.