Я пытаюсь взять процесс, который ранее выполнял несколько вызовов удаленных объектов параллельно, и заставить их работать последовательно.
Я знаю, что это хакерский подход (bandaid!), Но пока мой подход имеетбыло взять этот цикл for, который запускал каждый параллельный запрос:
(исходный код)
for (i = 0; i < _processQ.length; i++){
fObj = _processQ.getItemAt(i);
f = fObj.Name;
fObj.Progress = "Processing...";
ro.process(gameid,f);
}
и изменить его на:
(новый код)
for (i = 0; i < _processQ.length; i++){
fObj = _processQ.getItemAt(i);
f = fObj.Name;
fObj.Progress = "Processing...";
ro.process(gameid,f);
//pause this loop until a result is returned from the request that was just made.
_pause_queue = true;
while(_pause_queue){
//do nothing
}
}
Где _pause_queue
- это частное глобальное логическое значение для класса.В функциях-обработчиках ошибок и откликов-ответов он устанавливается в значение false, так что бесконечный цикл where освобождается и цикл for продолжается.
Это функционально, но пользовательский интерфейс обновляется только послецикл while завершается, что вызывает отрицательный побочный эффект, который приводит к зависанию приложения в ожидании ответа.
Есть ли что-то, что я могу вставить в цикл while, чтобы позволить флэш-памяти обновлять дисплей?В VB (тьфу!) Я бы использовал DoEvents
, но я не знаю эквивалента для Actionscript.
Альтернативно, есть ли способ добавить простой система очередей, если полностью переписать приложение?Это устаревший код, и я в сжатые сроки, поэтому я хотел бы изменить его как можно меньше.(В противном случае я бы переписал его с нуля и использовал бы Swiz, чтобы получить цепочку событий.)