读书人

怎么控制多函数调用递归函数时不抢进程

发布时间: 2012-02-28 13:06:36 作者: rapoo

如何控制多函数调用递归函数时不抢进程?

JScript code
function aaa() {  document.getElementById("div1").style.left = document.getElementById("div1").style.left - 1  if(document.getElementById("div1").style.left  >= 0){    setTimeout("aaa()", 20);  }



显然aaa()函数是用来移动一个div的

函数bbb()有权调用aaa()
函数ccc()有权调用aaa()
函数ddd()有权调用aaa()


如何做到让bbb()调用aaa()的时候 ccc()和ddd()无权调用? 等aaa()递归达到目的后 再放开权限?




因为现在3个按钮分别控制bbb()ccc()ddd()


所以 3个按钮同时按下的时候 aaa()函数就会以原来3倍的速度调用...影响了原来的div的缓慢移动效果


[解决办法]
因为你本身有20ms的等待时间
现假设有A B C 三个方法在调用aaa()
那么A调用了aaa()
aaa()运行了之后休息20ms
B调用aaa()
在A的20ms里B是可以运行的
同理C也是
所以原本20ms内只运行一次的现在可以变为3次

至于说setTimeout其实是模拟多线程的,但是不影响这个结果的诞生。

读书人网 >JavaScript

热点推荐