我認爲我繼承了錯誤的代碼,這裏是處理:在我的命令中,我爲遠程對象創建一個本地變量,然後調用一個方法。結果,如果沒有數據,我啓動一個計時器。該計時器每隔2秒廣播一個事件,不斷調用該命令,直到返回數據。然後定時器停止。重複的Flex會話導致我的多個請求與不同的JSESSIONIDs
我們看到的是該方法只返回一次數據,然後下一次不返回(重複Flex會話錯誤)。它基本上交替。如果我們點擊的速度非常快,有時我們會有兩個連續工作。
有時,Java開發人員會看到這些請求以不同的JSESSIONID返回。我相信這會導致重複的Flex會話錯誤。
這是我繼承的錯誤代碼嗎?還有另外一種方法可以解決這個問題嗎?
我正在使用Cairngorm;這裏是執行命令。
public function execute(event:CairngormEvent):void
{
ruleName = (event as FetchReportEvent).ruleName;
var ro:RemoteObject = ServiceLocator.getInstance().getRemoteObject("quantRemoteObject");
if (model.guid != null)
{
var call:AsyncToken = ro.generateReportResultSetGet(model.guid);
call.addResponder(this);
}
ro.requestTimeout
}
public function result(data:Object):void
{
var resultEvent:ResultEvent = data as ResultEvent;
var ac:ArrayCollection = resultEvent.result as ArrayCollection;
timer.stop();
if (ac == null || ac.length == 0)
{
Alert.show("Received unknown data format from the server. Unable to generate report");
model.currentMode = RulesModelLocator.VIEW_MODE;
model.guid = null;
}
else if (ac.getItemAt(0) == false)
{
// no data yet, start the timer for next try
// make sure not cancelled
if (model.guid != null)
{
timer.addEventListener(TimerEvent.TIMER, timerHandler, false, 0, false);
timer.start();
}
else
{
timer.stop();
}
}
}
private function timerHandler(event:TimerEvent):void
{
var fetchReportEvent:FetchReportEvent = new FetchReportEvent();
fetchReportEvent.ruleName = ruleName;
fetchReportEvent.dispatch();
}
感謝您的任何有用的提示!
顯示代碼。你如何使用命令?你在使用框架嗎? –
我已經用代碼更新了帖子。我正在使用Cairngorm,timerHandler()方法中的事件廣播只是調用此命令的execute()方法。 – fumeng
你的活動如何派發?而不是在顯示列表?! –