首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

关于FLEX异步子用

2013-09-06 
关于FLEX异步调用我们都知道在FLEX中,我们写的代码都是异步执行的,所谓“异步”就是方法调用之后,当前线程并

关于FLEX异步调用

我们都知道在FLEX中,我们写的代码都是异步执行的,所谓“异步”就是方法调用之后,当前线程并不阻塞以等待调用结果的返回,而是继续执行下一行代码(意思就是一行代码执行完后,并不会立即得到结果,再执行下一行代码。而是得不到结果,就继续执行下一行代码。最后FLASH PLAYER 中会有其它线程守候远程方法调用的结果,通过事件的形式,通知应用进行相应的处理),看了一些书籍和资料,也做了一些实例,异步调用经常会引起的2个问题:

问题1:异步调用导致模型数据不一致。

由于FLEX的异步执行,就无法保证这些远程调用的结果按顺序返回,因此会造成调用参数与返回的结果不匹配,这就造成了数据模型的不一致。

问题2:异步调用导致用户反复误操作。

由于FLEX在异步执行的时候,不会阻塞当前的线程,而此时用户还可以继续操作当前的人机界面 。如果远程调用比较耗费性能,需要等上几妙钟才能返回,这时如果人机界面上没有执行相应的处理 ,那么就会有用户认为自己所做的操作没起作用,就有可能一直执行这个操作,这样多次连续重复请求服务器,就会浪费服务器资源,并且会引起用户的误操作。

那么我们到底如何才能避免这种问题的出现呢?也就是我们怎么样才能在异步执行的时候,当执行完一句代码后,立即得到结果的返回,再去执行下一句代码呢?

我们可以使用回调函数。

1  首先我们可以自定义一个事件,在事件里面加入回调函数。

private function callbackHandler(event:MyComboBoxEvent):void{event.callback(selectNewIndex);}

这样,就可以解决问题了。当然解决异步所带来的问题不只这一种。有什么不对的地方,还请大家多多指正补充!








热点排行