是否可以使用 setInterval 等待承诺响应?

is it possible to await for a promise response using setInterval?

基本上我有一个计时器,假设计时器从 60 秒开始,当它达到 0 时变为 0,它会发出 api 调用并重新启动计时器,我遇到的问题是当计时器达到 0 它只是重新启动而不等待承诺响应,在某种程度上我需要计时器在 0 处暂停等待响应然后再次从 60 开始计数,我尝试使用 clearInterval() 但它仅在第一个工作计时器停止后倒计时,这是我的以下代码,我认为它会更容易理解

setInterval(async () => {
    document.querySelector('.timeh1').innerHTML = newInterval - i
    i++
    if(i >= newInterval){
        await apiCallReload(currency)                
        i = 0
    }
    }, 1000)

如您所见,此函数每秒执行一次,当 运行 时间 (i) 达到计时器限制 (newInterval) 时,它将调用我的 apiCallReload() 函数,计时器将重置为0,但问题是计时器重置而不等待函数承诺(从 api 获得响应需要 5 到 10 秒)是否有一个 way/workaround 我可以使计时器到 0 时停止,等待 api 响应然后重新开始计数?

我想,你必须使用 setTimeout(),像这样

let time = 60;

async function callback() {
  time = time - 1;
  if (time === 0) {
   await fetch('https://google.com');
   time = 60;
  }
  setTimeout(callback, 1000)
}

callback()

您可以使用 while 循环获得所需的结果...

let waitTime = 3000

;(async ()=>{
  console.log('Started')
  while(true) {
      await new Promise(res=>setTimeout(res,waitTime))
      console.log('Waited', waitTime, 'ms')
      let randTime = 1000 + Math.random()*1000
      await new Promise(res=>setTimeout(()=>{console.log('your asnyc fun',randTime);res();},randTime)) //  your async func
  }
})()