如何在 Js 中重置 setInterval()?

How to reset the setInterval() in Js?

我需要在服务器 运行ning 时实时更新 ('http://localhost:3000/users')。 我在给定的 setInterval 中有一个函数 fetchSlots() 运行ning。 如果在数据库中添加或删除了任何用户(即在 ('http://localhost:3000/users') 中)。我需要获取新添加的项目并在 fetchSlots() 中使用它。就像我 运行 服务器下面的代码,它每隔 30000ms.If 获取详细信息我将一个用户添加到数据库,在下一个时间间隔内,不会获取新添加的用户详细信息。类似的,如果我在服务器 [=] 时从数据库中删除一个用户=19=]ning,在下一个删除用户详细信息的时间间隔中,也是 fetched.Should 我必须每 30000 毫秒重置一次时间间隔,否则我该如何解决这个问题。

任何帮助!

async function polling() {
    await axios.get('http://localhost:3000/users').then(async response => {
      for (let l = 0; l < response.data.length; l++) {
        slotFound = false;
        const apiCall = setInterval(async () => {
          await fetchSlots(response.data[l].pincode, response.data[l].emailid);
        }, 30000);
      }
    });
  }

这里为什么不用函数?

function bla(t, p) {
  setInterval(async () => {
    console.log(p)
  }, t);
}

bla(3000, "30000")
bla(4000, "40000")

回答你的标题问题:“如何在 Js 中重置 setInterval()?” 您可以通过使用 setInterval 返回的内容调用 clearInterval 来停止间隔。

clearInterval(apiCall);

但是按照您在描述中所说的去做,我觉得这样会更直接。

async function polling() {
    const response = await axios.get('http://localhost:3000/users');
    for (let data of response.data) {
        slotFound = false;
        await fetchSlots(data.pincode, data.emailid);
    }
}
setInterval(polling, 30000);