加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex偶尔监听不到事件的原因

发布时间:2020-12-15 01:02:19 所属栏目:百科 来源:网络整理
导读:首先明确一个原理:函数中的变量都是局部变量,会被GC垃圾回收 因此,在函数中给局部变量添加事件监听,会概率性的出现监听不到事件返回的情况。 近期在做flex批量文件上传时,在一个函数里遍历FileReferenceList中的FileReference,然后动态给FileReference

首先明确一个原理:函数中的变量都是局部变量,会被GC垃圾回收

因此,在函数中给局部变量添加事件监听,会概率性的出现监听不到事件返回的情况。

近期在做flex批量文件上传时,在一个函数里遍历FileReferenceList中的FileReference,然后动态给FileReference添加Event.COMPLETE事件,结果发现在直接运行时根本不会进入到我添加的事件监听中,但是一步步DEBUG的话就可以。

代码如下:

		/**
		 * 上传文件
		 */
		public function upload():void {
			this.batch = UIDUtil.createUID();
			var file:FileReference = this.fileList.fileList.shift() as FileReference;
			file.addEventListener(Event.COMPLETE,completeHandler);
			file.load();
			waitUpload();
		}

因为是通过局部变量file动态添加监听,所以会被GC垃圾回收,就监听不到了

定义一个私有变量,来进行监听即可了

		/**
		 * 上传文件
		 */
		public function upload():void {
			this.batch = UIDUtil.createUID();
			this.currentFile = this.fileList.fileList.shift() as FileReference;
			this.currentFile.addEventListener(Event.COMPLETE,completeHandler);
			this.currentFile.load();
			waitUpload();
		}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读