![]() |
Паралельная загрузка нескольких XML файлов.
Идет процесс инициализации. Нужно в середине процесса подгрузить несколько XML файлов. Как мне сначала загрузить все что нужно, а потом запустить процесс далее. Я начинаю грузить несколько файлов. Событий на завершение загрузки тоже несколько. Кто закончит раньше знать не могу.
Первое, что пришло, это цепочка. Начинаю грузить первый файл. В событии окончания загрузки разбираю файл и начинаю грузить второй. В событии завершения загрузки второго файла разбираю файл и начинаю грузить третий. И так далее по всем файлам. В функции события окончания загрузки последнего файла продолжаю работу основной программы. И что-то с ходу нормальной альтернативы придумать не могу. |
Для каждого файла заведите флаг загрузки. При завершении загрузки файла устанавливаете его флаг и проверяете все остальные - если все стоят, значит все файлы загружены.
|
Хм... А если файлов много, то кучу флагов делать? Про флаги была идея, но не очень нравиться. Может есть еще какой метод?
|
я делаю либо флаги, либо цепочкой :)
ИМХО флаги лучше, а что не нравится? |
Jewelz, и там и там не удобно изменять структуру. У меня файлов много. И на этапе разработки их перечень постоянно меняется. Да и сомнения берут, что это правильный подход. Потому то собственно и интересуюсь.
|
Можно сделать счетчик вместо флагов. Еще есть bulk-loader, готовая библиотека для таких дел, но я ее ни разу не использовал.
|
можно еще запомнить в начале кол-во файлов в переменную и при окончании загрузки минусовать, и тут-же проверять если ноль то все уже загрузились
|
а в чем проблема закинуть кучу лодеров в массив и слушать когда же она закачают
|
iflamberg Спасибо за наводку. То что нужно.
Код AS3:
Все, сам посмотрел внутри. Через статику сделано. Классно и не сильно большая библиотека. random13 Лоадеры в массив - понятно. Слушать когда закачаются - непонятно. Слушать как? |
Цитата:
cоздаем лодер, кидаем ему ссыль, говорим загрузить, вешаем слушатель на лодер(по завершение загрузки выполнить то то), закидываем слушатель в массив. как ток выполнился колбек удаляем лодер из массива, стопим все снимаем слушатель и уничтожаем лодер |
random13 Понял. Не умею вешать слушатели. Буду разбираться. Вопрос! Я сильно проиграю в производительности и размере флешки, если буду использовать эту библиотеку? По сути там реализовано как раз то что вы описали. Ведь удобная же, да?)
|
У меня было удобно все COMPLETE отрабатывать в одном методе — он складывал полученные XML в массив, инкрементировал некую переменную и сравнивал ее с ожидаемым количеством загруженных данных. Если больше — шел дальше: перебирал массив и в зависимости от имени корневого элемента отсылал на тот или иной парсер.
Сделай так же. Даже если у тебя обработчики разные (ну например ты парсишь сразу или еще что-то) — вынеси инкремент с проверкой в отдельную функцию и вызывай ее в каждом своем обработчике. |
Zebestov, а можно код? Я даже понять не могу что не могу понять) Вроде все отдельные слова понимаю, а все вместе не складывается(
|
Код AS3:
|
Цитата:
тоже самое пишешь самостоятельно ток без всякой кривоты |
Код AS3:
|
silin Спасибо. Понял каких знаний не хватало.
Код AS3:
random13 А что конкретно было не так? Я вроде как обучаюсь флешу. Хочется выбрать один вариант и уже спокойно пользовать и не переучиваться. Но уж больно подкупает бульк простотой. Хотя и самому подгружать не большая проблема, как мне уже показали, но все-таки. По различным вариациям запроса "bulk-loader недостатки" ничего не нашел. В чем проигрываем? Память, скорость, функциональность? Zebestov Угу, понял все, кроме старта загрузки. URLLoader в конструкторе начинает загрузку? |
Цитата:
конечно задротней сначала вешать обработчик на процессы, прежде чем запускать их =) но не в данном случае. хотя с моим максимализмом я удивлен как это я не сделал все через load() 0o |
Цитата:
его простота как то невнятно работает, прибавляет уж не помню точно, помойму около 10k веса и ничего хорошего, то же самое выполняет пара методов описанных выше.. |
random13 У меня приложение уже больше двух мегабайт. Для банера я конечно эту либу не буду использовать, но для флешек весом больше 100кб можно наверное)
Zebestov from help.adobe Цитата:
|
0o
ну вот если сделаешь так: Код AS3:
Код AS3:
Код AS3:
|
Цитата:
да эт понятно что когда у тебя 2 метра то уже пофиг лишний 10-20k, но мне булк дико не понравился, очень и очень неповоротливый и невнятный, я так и не понял как запараллелить в нем загрузки... |
random13 А он последовательно грузит?
|
ну у меня получилось только запихать в него все урлы которые нужно загрузить, нажать старт, и ждать пока загрузятся все а уже потом ток возвращать что он загрузил, мож не разобрался конечно, но стандартный лодер проще и удобнее
|
| Часовой пояс GMT +4, время: 13:27. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.