急!!!!求大神!js中如何把setTimeout的时间写活?

我这里有一个算法,但是每次调用后会根据不同的需要所耗费的时间不同,
然后我要写一个绑定事件来反复调用这个函数,如果把时间写死,有的算法很快会浪费时间,但是也有的算法会执行不完,如何才能根据不同的需要把算法正好执行完后再执行之后的内容。。。

算法有返回值没有,有的话判断一下,如果执行完成,则再次调用函数。

虽然不太清楚,你的需求是什么。但是你所说的改变setTimeout的时间来处理你现在所遇到的问题,肯定是不合理,影响执行时间的因素有很多,如果固定写死,迟早会有问题。建议使用回调函数的形式

修改你的调用方法,传递一个回到函数进去,你所有算法执行完毕后再执行回调,

setTimeout肯定是不行的,你无法确定执行完毕的时间。否则你就设置一个状态,setTimeout定时检查这个状态,如果更改了状态是完毕时就在执行相关代码

你都写事件了,事件就是委托回调函数的,直接用回调;
或者定义一个状态在你的算法函数内部完成的时候就true,这样setTimeout再次开始,或者用算法返回值;
是在不行可以用eval

function a() { alert(1); }

var t=1000;//我是动态时间你来打我啊

var s=" setTimeout(function(){ a(); },"+t+")";
eval(s);