Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Подскажите, как можно синхронно загрузить внешний файл? (http://www.flasher.ru/forum/showthread.php?t=143316)

Sociofilm 17.08.2010 07:08

Цитата:

Сообщение от mikhailk (Сообщение 929280)
На самом деле, на мой взгляд, циклы имеет смысл использовать только для перебора чего-то там в чем-то там. Например, объектов в коллекции, элементов в массиве или свойств в объекте.

Непосредственно в логике программы при асинхронном программировании циклы ничего кроме головной боли не принесут. Что мы, собственно, и наблюдаем. :)

все верно, в цикле перебираются элементы массива, в зависимости от сочетания элементов выполняется логика. Как обойтись без цикла я даже не знаю. Можно конечно на события переписать, но тогда будет значительный проигрыш в быстродействии.

SunShadow 17.08.2010 07:54

Цитата:

Сообщение от Sociofilm (Сообщение 929408)
... Как обойтись без цикла я даже не знаю. Можно конечно на события переписать, но тогда будет значительный проигрыш в быстродействии.

по пунктам:
1) Надо перебрать все позиции
2) дожидаться события во время перебора

Как делал я:
  1. Создал объект который отвечал за один перебор, назовем его List.
  2. В List при старте определял массив со списком подлежащим к перебору.
  3. Собственно создаем цикл из трех методов:
    • Получить элемент массива. Если элемент необходимо ждать регистрируем слушатель события для следующего шага, если не надо следующий шаг пропускаем.
    • В данный шаг мы попадаем при наступлении события по окончании ожидания
    • Здесь производится проверка есть ли еще элементы в массиве List и если они имеются переходим на первый шаг списка, если нет выходим из цикла.
  4. Завершение всех процедур по работе с List
Вот и все. Теперь цикл выполняется, но при необходимости мы ожидаем наступления события. И ничего не мешает рекурсивно создавать внутри одного List другой.

Добавлено через 5 минут
Да еще как вариант. Вы можете предварительно загрузить весь список в некий кэш, а потом оттуда просто создавать копии экземпляров не дожидаясь загрузки, тогда ваш цикл будет работать в исходном виде, вот только загружать в кэш будете асинхронно перед этим, по сути получите то же самое.

wvxvw 17.08.2010 10:40

Цитата:

Сообщение от Sociofilm (Сообщение 929408)
Можно конечно на события переписать, но тогда будет значительный проигрыш в быстродействии.

Да, конечно файл естесственно загружается моментально, особенно с удаленного компьютера, так что потеря производительности от того, что та же функция вызовется несколько раз вместо одного все испортит. Что за маразм вообще?


Часовой пояс GMT +4, время: 01:54.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.