您现在的位置是:首页 > 电脑技术查询 > web开发

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

编辑:chaxungu时间:2022-10-02 23:23:31分类:web开发

如何控制多函数调用递归函数时不抢进程?
JScript codefunction 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其实是模拟多线程的,但是不影响这个结果的诞生。