Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.09.2014, 12:16
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Один или несколько асинхронных запросов?
Нужно обеспечить возможность скачивания нескольких файлов с сервера. Что лучше? Использовать сразу несколько xmlhttprequest для одновременного скачивания, или один, а остальные добавить в очередь(пока не скачается один файл)?
Могут ли возникнуть какие-то проблемы при одновременном скачивании?
Ответить с цитированием
  #2 (permalink)  
Старый 16.09.2014, 13:27
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,597

Для этого в том числе асинхронность и придумали, чтоб несколько штук одновременно пускать.) Проблем не возникнет никаких, если запросов больше лимита браузера он сам поставит в очередь. Только главное не забывать, что ответы придут совсем не обязательно в том порядке в каком вызовы.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 16.09.2014, 13:35
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Aetae,
Спасибо. Да это не страшно, главное, чтобы скачалось все) А как доступ получить к какому либо запросу? Например у меня скачивается 2 файла и нужно остановить загрузку второго.
Ответить с цитированием
  #4 (permalink)  
Старый 16.09.2014, 13:38
Аватар для nice_try
Профессор
Отправить личное сообщение для nice_try Посмотреть профиль Найти все сообщения от nice_try
 
Регистрация: 11.12.2013
Сообщений: 313

Сообщение от Dimaz Посмотреть сообщение
Aetae,
Спасибо. Да это не страшно, главное, чтобы скачалось все) А как доступ получить к какому либо запросу? Например у меня скачивается 2 файла и нужно остановить загрузку второго.
xhr.abort(); ?
Ответить с цитированием
  #5 (permalink)  
Старый 16.09.2014, 13:43
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Сообщение от nice_try Посмотреть сообщение
xhr.abort(); ?
Это понятно. Но он остановит первый. А как ко второму обратиться?
Ответить с цитированием
  #6 (permalink)  
Старый 16.09.2014, 13:53
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,140

какой остановишь тот и остановится.
xhr у каждого запроса свой
Ответить с цитированием
  #7 (permalink)  
Старый 16.09.2014, 14:43
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Сообщение от MallSerg Посмотреть сообщение
какой остановишь тот и остановится.
xhr у каждого запроса свой
У меня на клик по ссылке повешен обработчик, который создает объект xmlhttprequest. Кликнул по первой ссылке, началась загрузка первого файла, кликнул по второй - загрузка второго файла. Так как мне обратиться ко второму созданному объекту xhr?
Ответить с цитированием
  #8 (permalink)  
Старый 16.09.2014, 14:46
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,597

Кешируй их во внешний массив.
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 16.09.2014, 17:10
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Сообщение от Aetae Посмотреть сообщение
Кешируй их во внешний массив.
Создал массив. Теперь каждый новый xhr добавляется в массив. Только вот как сделать статус загрузки для каждого файла? После создания нового xhr, значение переменной "x" увеличивается на единицу.
Функция updateProgress находит элемент в который будет загружать статус. Теперь, когда скачиваешь второй файл, статус загрузки второго файла заползает на статус загрузки первого, потому что в id элемента прибавляется значение переменной "x". Как быть?
function updateProgress (event) {
  if (event.lengthComputable) {
	var status = document.getElementById("b"+x);
	status.innerHTML = 'Загружено ' + event.loaded + ' байт из '+ event.total;
  } else {
    // Unable to compute progress information since the total size is unknown
  }
arr[x].addEventListener("progress", updateProgress, false);
}
Ответить с цитированием
  #10 (permalink)  
Старый 17.09.2014, 10:32
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,140

у каждого xhr есть свойство readyState (состояние 0 — не инициализирован, 1 — открыт, 2 — отправка данных, 3 — получение данных и 4 — данные загружены)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик click вызывается несколько раз или не всегда вызывается OlegJquery jQuery 2 21.07.2011 20:37
Несколько простых вопросов от чайника Lucidmind Общие вопросы Javascript 2 06.05.2011 11:59
перевод в число или как прибавить один anton_vek Общие вопросы Javascript 3 26.08.2010 13:07
Чтоб ссылка появлялась один раз для каждого пользователя (по IP или Cookies) Sequoia Общие вопросы Javascript 2 28.01.2010 19:16
не получается вложить один эффект в другой svip Библиотеки/Тулкиты/Фреймворки 1 30.03.2008 11:07