2009-08-28 58 views

回答

4

的setTimeout(闭合,0)是创建一个新的事件堆栈。如果此解决方案不适合您,我不明白您的目标。你试图完成什么目标?

Flex有ENTER_FRAME事件,定时器,使用callLater,setTimeout的,setInterval的,所有这些延迟调用,并创建新的执行堆栈。

你是不是想将代码注入当前栈?如果是这样,你可能需要看看这样的:http://en.wikipedia.org/wiki/Active_object。这个想法是你将函数(闭包)推入数组中,并且当前一个运行完成时,活动对象控制器将下一个从列表中拉出。这是最简单的情况。您可以编写一个更复杂的程序,使用您自己的日程管理系统来设置高,中,低优先级堆栈。 (例如,在等待时间过长后得到提升)。

但是,嘿!细节决定成败。目标是什么?

+0

谢谢 - 我会研究你提到的功能。 目标基本上是为了让我的意图(“我想推动一个闭包到执行堆栈,所以它将在当前事件处理程序完成后执行一些不确定的时间”)在代码中清除,setTimeout( ...,0)“并不觉得它让事情变得非常清晰(当然,除非你对setTimeout的内部工作有所了解)。 – 2009-09-04 14:01:39

+0

好吧,所以callLater不是我正在寻找的东西...但它可能是我会得到的最好的,谢谢。 – 2009-09-04 14:05:26

+0

不要讨厌setTimeout。自JavaScript早期开始就已经存在。但是如果你需要它来实现任意的延迟,那么你的设计可能有问题。我从来没有发现callLater所有可靠的“等待”。至少在setTimout中,你知道你等待了多久,即使它是黑客。 – Glenn 2009-09-04 21:48:41