Форум 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 13.08.2010 08:32

Подскажите, как можно синхронно загрузить внешний файл?
 
Асинхронно - все понятно, URLLoader.load и обрабатываем COMPLETE.

Но у меня в программе рекурсия, поэтому надо ее как то приостановить,
загрузить файл, добавить из него данные в общую очередь обработки и возобновить выполнение программы с места остановки.
Стэк вызовов процедур примерно такой:
Код:

class.Execute();
  StartParsing();
    while (...) {
      ProcessBlock();
        ProcessCommand(); // который опять же может вызвать ProcessBlock()
      ...
    }

вот как раз в ProcessCommand() мне надо подгрузить внешний файл, поставить данные в общую очередь обработки и возобновить выполнение рекурсии.

udaaff 13.08.2010 08:36

Надо дожидаться события загрузки.

Hidest 13.08.2010 12:50

Так в чем проблема... По окончании загрузки очередного элемента вызывайте опять метод. Будет та же рекурсия, только растянутая во времени...

Sociofilm 16.08.2010 12:47

Сори, я немного неправильно указал код. Там все это крутится в цикле (я уже исправил код в первом сообщении).
Проблема в том, что пока это все крутится в цикле, событие загрузки не происходит. Надо выйти из цикла, чтобы оно наступило.

iNils 16.08.2010 12:51

Избавьтесь от цикла.

Sociofilm 16.08.2010 14:05

Цитата:

Сообщение от iNils (Сообщение 929236)
Избавьтесь от цикла.

замечательное предложение! следующее будет "удалите программу"?:taunt:

iNils 16.08.2010 14:13

Разжевываю:
1. Синхронная загрузка невозможна.
2. Получение события возможно после выполнения действия любой функции и как следствие - требуется выход из цикла.
Вывод - надо избавится от цикла и запускать ProcessBlock после загрузки данных.

Sociofilm 16.08.2010 14:26

эх, жаль... программа получится кривокодной... ну что ж, спасибо и на этом!
видимо придется делать что то вроде loaderContext, чтоб запоминать состояние всех переменных в классе, а после загрузки файла восстанавливать их...

mikhailk 16.08.2010 15:33

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

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

Hidest 16.08.2010 18:18

Как раз так программа будет более прямокодна в вашей терминологии...


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

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