假设我在所有应用程序中都有一个单一模式内的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。似乎没有任何工作。 –