Javascript setInterval循环不';不要等待

Javascript setInterval循环不';不要等待,javascript,async-await,setinterval,Javascript,Async Await,Setinterval,我制作了一个示例函数“webrequest()”,假设这是一个需要2才能得到响应的webrequest。我想在收到每个响应后发送一个新的webrequest。当我运行te循环时,它不会在等待时等待,而是发送另一个webrequest 我不知道我做错了什么。我找不到关于这个问题的帖子(可能我搜索错了) 所以输出应该是 Welcome (2 seconds timeout) Bye Welcome (2 seconds timeout) Bye ... 如上所述,如果您不停止,setInterva

我制作了一个示例函数“webrequest()”,假设这是一个需要2才能得到响应的webrequest。我想在收到每个响应后发送一个新的webrequest。当我运行te循环时,它不会在等待时等待,而是发送另一个webrequest

我不知道我做错了什么。我找不到关于这个问题的帖子(可能我搜索错了)

所以输出应该是

Welcome
(2 seconds timeout)
Bye
Welcome
(2 seconds timeout)
Bye
...

如上所述,如果您不停止,setInterval将无法很好地实现承诺。如果您清除了间隔,您可以像这样使用它:

似乎setTimeout正适合这种情况。它应该是isside PROMITE,以便与async一起使用。等待:

函数优先(){
console.log('Welcome')
}
函数第二(){
console.log('Bye')
}
异步函数loopTest(){
等待新的承诺(resolve=>setTimeout(()=>resolve(first()),1000));
等待新的承诺(resolve=>setTimeout(()=>resolve(second()),1000));
}

loopTest()
然后使用短时间运行的
设置间隔是没有意义的。只需使用一个循环:

  (async function() {
     while(true) {
       console.log('Welcome')
       await webrequest();
       console.log('Bye')
     }
})();

setInterval以指定的时间间隔运行函数,它不等待完成。您必须改用setTimeout,并在
wait
行之后安排一个新的超时。^他说的。此外,如果您死心塌地地想使用setInterval,那么您可以在
wait
之前执行
var a=setInterval(…)
然后在内部执行
clearInterval(a)
,然后在您应该使用
while(true){wait webRequest();wait delay(10);}
之后直接执行另一个
a=setInterval(…)
  (async function() {
     while(true) {
       console.log('Welcome')
       await webrequest();
       console.log('Bye')
     }
})();