- 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其实是模拟多线程的,但是不影响这个结果的诞生。