Я бы сослался на комментарий The_asMan о проверке того, действительно ли вы собираетесь отправлять HTTP-запросы раз в секунду.
Что я хотел бы сделать, так это попробовать подход, который последовательно запрашивает данные, главным образом потому, что вы используете глобальные переменные для хранения / представления данных, даже если вы также допускаете одновременную обработку нескольких запросов / ответов HTTP. Таким образом, клиенты с разной пропускной способностью могут запрашивать данные не чаще одного раза в секунду, а клиенты с более низкой пропускной способностью не будут ограничивать свои возможности, повторно запрашивая данные до того, как пользовательский интерфейс сможет отобразить последний ответ.
Обычно я останавливаю таймер на одну секунду, затем при ошибке или после того, как ответ был полностью / в основном обработан, снова запускаю таймер.
Мои изменения помечены // ADDED
xmlLoader.addEventListener(Event.COMPLETE, showXML);
xmlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
// ADDED - restart (or maybe don't restart?) on error
function errorHandler(e:Event):void{
// log and/or show error?
if(!myTimer.running)
myTimer.start(); //start up again and hope for the best
}
function timerListener(e:TimerEvent):void {
// ADDED - stop timer and resume it after showXML (or error handler) has handled the response
myTimer.stop();
callPriceFeed();
}
function ShowPrice():void {
currentPriceTXT.text = "PRICE : "+myObj.currentPrice;
trace(gnutradeObj.currentPrice+" "+Math.random());
priceGlowMC.gotoAndPlay(2);
// ADDED - data from response ought to have migrated to the UI, now start up timer again
if(!myTimer.running)
myTimer.start();
}