![]() |
Подскажите, как можно синхронно загрузить внешний файл?
Асинхронно - все понятно, URLLoader.load и обрабатываем COMPLETE.
Но у меня в программе рекурсия, поэтому надо ее как то приостановить, загрузить файл, добавить из него данные в общую очередь обработки и возобновить выполнение программы с места остановки. Стэк вызовов процедур примерно такой: Код:
class.Execute(); |
Надо дожидаться события загрузки.
|
Так в чем проблема... По окончании загрузки очередного элемента вызывайте опять метод. Будет та же рекурсия, только растянутая во времени...
|
Сори, я немного неправильно указал код. Там все это крутится в цикле (я уже исправил код в первом сообщении).
Проблема в том, что пока это все крутится в цикле, событие загрузки не происходит. Надо выйти из цикла, чтобы оно наступило. |
Избавьтесь от цикла.
|
Цитата:
|
Разжевываю:
1. Синхронная загрузка невозможна. 2. Получение события возможно после выполнения действия любой функции и как следствие - требуется выход из цикла. Вывод - надо избавится от цикла и запускать ProcessBlock после загрузки данных. |
эх, жаль... программа получится кривокодной... ну что ж, спасибо и на этом!
видимо придется делать что то вроде loaderContext, чтоб запоминать состояние всех переменных в классе, а после загрузки файла восстанавливать их... |
На самом деле, на мой взгляд, циклы имеет смысл использовать только для перебора чего-то там в чем-то там. Например, объектов в коллекции, элементов в массиве или свойств в объекте.
Непосредственно в логике программы при асинхронном программировании циклы ничего кроме головной боли не принесут. Что мы, собственно, и наблюдаем. :) |
Как раз так программа будет более прямокодна в вашей терминологии...
|
| Часовой пояс GMT +4, время: 21:31. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.