小白,请教各位大佬!javascript timer执行一段时间后自动停了求指导!

问题描述
我们在做一个业务过程中,需要每隔一段时间去轮询业务里面的一个状态,只要状态没有到,就一直轮询下去,所以用了settimeout
以下补充一点做过的工作注意:这里虽然是轮询,但是考虑到setInterval不能保证前面执行的回调已经执行完了,所以选择用了setTimeout,当然出现了这个问题之后我换了setInterval也一样,程序在轮询5分钟后,自动停了
补充点业务知识我们这个是证券开户的双向视频-视频见证,就是视频连线,见证人(券商团队员工)、开户人两者之间的视频通话,由于这个过程要持续几分钟时间,直到见证人审核通过,在业务后台修改对应的状态,接口一直轮询到这个状态变更才会停止视频见证用户一般是手机app,里面内嵌H5页面见证人是pc
//状态码,直到status=1,停止轮询
letstatus=0
lettimer=null;
functionfun(){
//请求接口,判断是否变化
todo
if(status==1){
clearInterval(timer)
todo
}
if(status==0){
//10秒后改变状态码值
clearInterval(timer)
timer=setTimeout(()=>{
fun()
},10000)
}
}
问题出现的环境背景及自己尝试过哪些方法
目前只出现在华为Mate20手机中
相关代码
//请把代码文本粘贴到下方(请勿用图片代替代码)
//状态码,直到status=1,停止轮询
letstatus=0
functionfun(){
//请求接口,判断是否变化
if(status==1){
clearInterval(timer)
}
if(status==0){
//10秒后改变状态码值
clearInterval(timer)
lettimer=setTimeout(()=>{
fun()
},10000)
}
}
你期待的结果是什么?实际看到的错误信息又是什么?
期待的结果就是,程序一直轮询下去,直到状态改变
补充一点测试细节:
假如延迟5秒执行,一般会在4分55秒停,就是说会在最后一次轮询到五分钟的时候,停止如果延时6秒执行,一般会在4分54秒自动停
牧羊人nacy
浏览 664回答 2
2回答

潇湘沐

用setInterval吧,setTimeout是延迟执行。setInterval(()=>{fun()},5000)fun(){//...}

白衣染霜花

settimeout延迟执行只执行一次。setInterval按照指定的周期循环执行。所以如果想一直轮询的话用setInterval
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript