Суть такова, к примеру есть функция которая делает запрос на сервер для генерации ссылки по последующим запуском этой ссылки в плеере. Ну есть одна проблемка к примеру на сайте в блоке есть плейлист и кнопки в плеере, когда человек быстро клацает эти кнопки вперёд назад или плейлист то генерируется очень много запросов.. и они как то становятся в очередь или что? к примеру в плейлисте 10 названий, он быстро клацнул на все, не дожидаясь ответа от сервера.. к примеру остановился на 10.когда запрос завершился скрипт включает этот фаил к примеру 10 раз... я сделал переменную для ajax запроса и выставил флаги к в примере в низу, по 10 раз файл перестал запускаться. но всё равно запросы проскакивают если быстро переключатся между файлами... как бы это так решить мм? блокировать интерфейс или кнопки до загрузки файла не вариант) надо как то сделать если он быстро переключает то скрипт загружает только последний выбранный файл )
resetnumber = 0;
go = true;
//Генерация ссылки
function player(idurl) {
if (go == true) {
go = false;
ajax = $.ajax({
dataType: 'json',
url: "http://site.ru&sesid=" + coocike + "&hd=720&id=" + idurl,
error: function(XMLHttpRequest) {
if (XMLHttpRequest.statusText != "abort") {
$.ajax({
url: 'http://site.ru&sesid=' + coocike,
cache: false,
dataType: 'json',
timeout: 5000,
error: function() {
alert('не авторизован к примеру');
window.location.href = '/error';
},
success: function() {
go = true;
alert('БЫЛА ОШИБКА переподключаемся');
player(idurl);
resetnumber++;
$('.infoerr').html('Возможно проблемы с интернетом переподключаемся' + resetnumber);
}
});
}
},
success: function(json) {
go = true;
resetnumber = 0;
file = json.get.file;
RUN(file); //включаем плеер
$('#preload').stop().fadeOut();
setInterval(function() {
subtitrs(json.get.subtitrs); //Запускаем субтитры например
}, 100);
}
})
} else {
ajax.abort();
go = true;
player(idurl);
}
}
Перед запросом
ajax = $.ajax({
сделайте "unbind" для кнопки (если JQuery), а в коллбеке ответа
success: function(json) { вот здесь }
обратное назначение
$("#button").on("click", function(){ ... })
В этом случае скрипт не будет реагировать на многократные нажатия, пока не вернется ответ сервера.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости