假设我在单例模式中有一个 NetConnection 对象,它与我所有应用程序中的所有数据访问对象类共享。现在,您进入屏幕并要求加载 5 千条记录,因为您想搜索一些错误或其他什么。但是现在你才意识到你在错误的屏幕上,你实际上想要来自另一个“实体”的 5000 条记录。如何防止您不得不等待近 2 分钟直到数据到达这里,以便您可以转到另一个屏幕并要求一些不同的数据?我尝试使用 ESC 按钮作为NetConnection.close()
事件,但它实际上不起作用。它只是调度一个空事件,调用仍然返回。我知道我不能要求服务器不要继续做他的工作,但我想知道如何确保在你按下 ESC 或类似的东西后,ActionScript 不会再打扰那个特定的调用,你可以继续你的生活。而且,当服务器在后台响应该调用时,我将把它扔掉,因为你已经同意取消它。
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 按钮将调用“关闭”函数。我尝试将其设置为 null 并重新构建它。它没有用。我认为在 NetConnection 拨打电话后,无法更改响应者。