单例遇到的问题
?
今天一个单例的程序出了问题,分析一下。代码如下:
这是调用回调函数的代码,调用完注册回调函数,即将回调函数设为默认
?
//如果是结果事件,结果回调函数处理 public function result(data:Object):void { var event:ResultEvent = data as ResultEvent; resultCallbackFunction(event.result); resultCallbackFunction = defaultFunction; }?每次方法调用前会注册回调函数
//设置结果回调函数 public function setResultCallbackFunction(resultCallback:Function = null):void { if (resultCallback == null) { resultCallbackFunction = defaultFunction; } else { resultCallbackFunction = resultCallback; } }?问题出现了,我有一个程序,是调用接口的回调函数中再去调用接口
举个例子是这样的
?
[Test]public function testGetAccountInfo():void{//接口回调中调新接口accountService.getAccountInfo("13666666666","012345",resultItemResultHandler2,faultResultHandler);}public function resultItemResultHandler2(data:Object):void{testGetHoldNumberList();}[Test]public function testGetHoldNumberList():void{accountService.getHoldNumberList("1","41000000","02","012231",resultItemResultHandler,faultResultHandler);}这时问题出现了第一个接口回调过来时 执行
?
resultCallbackFunction(event.result);
即
resultItemResultHandler2
于是
testGetHoldNumberList()
方法执行了,也会走
setResultCallbackFunction
但设置完后,又执行了
resultCallbackFunction = defaultFunction;
于是之前的回调函数注册就没用了。大家使用单例时要注意了。
?
?