假設我在所有應用程序中都有一個單一模式內的NetConnection對象,它與所有數據訪問對象類共享。現在,你進入了一個屏幕,並要求加載5千條記錄,因爲你想搜索一些錯誤或任何其他信息。但是現在你只是意識到你在錯誤的屏幕上,而實際上你需要來自另一個「實體」的5千條記錄。如何防止您需要等待大約2分鐘,直到數據到達此處,以便您可以轉到另一個屏幕並請求一些不同的數據?我嘗試使用ESC按鈕作爲NetConnection.close()
事件的關鍵調用者,但它實際上不起作用。它只是發送一個空的事件,並且該呼叫仍然返回。我知道我不能要求服務器不要繼續工作,但我想知道如何確保在按下ESC或類似的東西之後,ActionScript不會再打擾該特定的通話,並且您可以繼續你的生活。而且,當服務器響應那個電話時,在後臺,我將把它扔掉,因爲你已經同意取消它。如何取消與NetConnection的AMF呼叫?
Ps .:我沒有任何疑問如何聽ESC按鈕並通過它調用某種方法,我只想知道一旦用戶決定不想接收該數據時要調用什麼並且他/她想要繼續前進而不必關閉應用並再次打開。
編輯:
我試圖使通話結束後銷燬Responder對象,但沒有奏效。
public function call(command:String, f:Function, fault:Function, ...parameters):void{
var r:Responder = new Responder(f, fault);
this._Responder = r;
if(parameters.length == 0)
GATEWAY.call(command, _Responder);
else
GATEWAY.call(command, _Responder, parameters);
}
public function close():void{
_Responder = new Responder(function(obj:Object):void{}, function(obj:Object):void{});
//_Responder = null;
trace("Canceled");
}
與這裏描述了代碼,我停止了對NetConnection::call
電話,開始打電話,我寫了「呼叫功能」。所以這個函數會構建一個響應器,它將在類範圍內,所以即使在調用完成之後我仍然可以訪問它,並且ESC按鈕會調用「Close」函數。我試着將它設置爲空並重新構建它。它沒有工作。 我認爲在NetConnection發起呼叫之後,響應者不能被改變。
是否有您必須使用單連接或一些你正在尋找從這個獲得利益的一個原因?無論我的想法是在您調用的單例中設置取消方法,在取消方法中,您都會創建一個新的NetConnection並停用您所使用的任何處理程序(說實話,我本人並沒有直接使用NetConnection,而是使用了AbstractService RPC類和IResponder實現對象來實現類似的任務,但通常我們實際上擁有每個Java服務的服務類實例,而不是每個服務類的每個方法)。 – shaunhusain
我試着調用'NetConnection :: close',重建'NetConnection'類並將對象設置爲null。我也嘗試了我剛剛在編輯中描述的內容,即不僅將NetConnection對象設置爲null,還對Responder對象設置null。似乎沒有任何工作。 –