精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-07
AS3.0事件侦听优先级确定的方法是按顺序线性执行么?事后才觉得问这个问题挺白痴的(遭到同事鄙视。。。),脚本执行,不涉及资源加载和远程调用,哪来的异步呢。。。。 结论是线性执行,不论优先级高的那个方法要执行多久,后面的都会等着,这也提醒我们某个事件处理逻辑和算法写得不要过于复杂,否则会耽误后面的侦听函数执行。所有的侦听函数都被放在EventDispatcher的一个listeners数组里,不过应该是private的,开debug模式强行输出可以看到一些内容。有兴趣的继续看吧: 我被绕进去,是来源于这段话:“给一个对象注册多个监听器,即使每个监听器的优先级别不同,但也无法保证后一个执行时前面的监听函数已经执行完毕。设计时,后面的函数不应该以前者执行完毕为条件。”---来源于Flex学习笔记_08 Flex的事件机制_高级应用 测试代码如下: public class TestEvent extends Sprite { 参考资料: 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-07-08
恩! 是应该注意!
|
|
返回顶楼 | |
发表时间:2011-07-12
应该是: 按顺序被调用的, 但不是按顺序结束的.
|
|
返回顶楼 | |
发表时间:2011-07-12
smithfox 写道 应该是: 按顺序被调用的, 但不是按顺序结束的.
不是吧,你有依据么。。。。 你看看我上面的测试,func2最后才输出,输出的num是在func3中循环完毕的,而不是循环当中的一个值 |
|
返回顶楼 | |
发表时间:2011-07-13
cuixuxucui 写道 smithfox 写道 应该是: 按顺序被调用的, 但不是按顺序结束的.
不是吧,你有依据么。。。。 你看看我上面的测试,func2最后才输出,输出的num是在func3中循环完毕的,而不是循环当中的一个值 priority 的值越大, 优先级越高, 3当然是先执行!!!! |
|
返回顶楼 | |
发表时间:2011-07-13
smithfox 写道 cuixuxucui 写道 smithfox 写道 应该是: 按顺序被调用的, 但不是按顺序结束的.
不是吧,你有依据么。。。。 你看看我上面的测试,func2最后才输出,输出的num是在func3中循环完毕的,而不是循环当中的一个值 priority 的值越大, 优先级越高, 3当然是先执行!!!! 3先执行当然没问题。。。我们争论的不是这个吧 你不是说,按顺序调用,不按顺序结束么。也就是说,先调用3,再调用2,但3可能未执行完时2就执行完了?? 不知道你说的是不是这个意思。那假如是这样的话,func2输出的值应该不到1783293664,而且是在func3输出之前出现。 不知道我说明白没有 |
|
返回顶楼 | |
发表时间:2011-07-13
既然是按顺序调用,就必须是按顺序结束的,AS是单线程执行的,你让他怎么才能做到“后开始的先完成”
|
|
返回顶楼 | |
发表时间:2011-07-13
优先级确定的话, 就是顺序执行的, 开始结束然后再开始结束....
|
|
返回顶楼 | |
发表时间:2011-07-13
int08h 写道 既然是按顺序调用,就必须是按顺序结束的,AS是单线程执行的,你让他怎么才能做到“后开始的先完成”
嗯,是这样的 |
|
返回顶楼 | |
发表时间:2011-07-13
zhangjie.0211 写道 优先级确定的话, 就是顺序执行的, 开始结束然后再开始结束....
嗯,是这样的 |
|
返回顶楼 | |