js for循环如何延时休眠

varrts=[0,1100,2000,3000,10000];//等待时间数组vark=0;for(leti=0;i<rts.length;i++){if(k==1){... var rts= [0,1100,2000,3000,10000]; //等待时间数组
var k=0;
for ( let i=0;i<rts.length;i++ ){
if (k==1){
k=0;
break;
} else{
setTimeout(() => {
list()
}, rts[i])
}
}
想实现的功能:根据rst数组中的毫秒数,每次等待不同的时间然后执行list(),其中有一个k值是list()中返回的,如果等于1,for循环要中止。上面代码中,是先把for循环执行完了,才会去执行list(),等不到返回k值就执行完了,所以无法做k值的判断。我的想法是有没有办法直接让for循环每执行一次就等待一定时间(时间是不固定的,从rts中取出的时间),如果可以实现,那么把setTimeout()去掉,可以达到一样的效果。
试过setInterval({},rts[i])的方法,也不行,延时的值不会变,会固定取第一次的值。
请大神帮忙看看有没有好的解决方法。
展开
 我来答
heart阿飞55
2018-05-02 · TA获得超过1086个赞
知道大有可为答主
回答量:3030
采纳率:82%
帮助的人:555万
展开全部
for语句不会因为有setTimeout的存在而停止,他会跳过setTimeout,setTimeout设定的是100毫秒的延迟,而for语句执行根本用不了那么长时间所以会先弹出九个alert,然后才setTimeout中的alert 可以使用递归来解决这个问题 var i=0; function al() { i++; if(i<10) setTimeout(function(){alert("i="+i);al()},2000); } al();
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式