当在范围外满足某些条件时,如何清除 WebSocket 中的间隔?

How to clear interval in WebSocket when some condition is met outside the scope?

我有一个像这样的简单 WebSocket 服务器:

wss.on('connection', ws => {
  console.log('user is connected to the server')
  const t = setInterval(() => {
    ++count
    ws.send(count)
  }, 2000);
})

我在页面下方有一个代码,例如

setInterval(() => {
  ++flag
}, 2000);

flag 正在 let flag = 1. 我想在 flag 达到某个数字(如 10)时清除第一个间隔。 我该如何实现?

您必须在函数外定义 t 以扩展作用域

let t;
wss.on('connection', ws => {
  console.log('user is connected to the server')
  t = setInterval(() => {
    ++count
    ws.send(count)
  }, 2000);
})

然后在flag正常的时候清除

let flag = 1;
setInterval(() => {
  ++flag;
  if(flag===10)
    clearInterval(t);
}, 2000);

此外,我建议您使用比 t 更能表达的名称。

也许,您还想清除第二个计时器

let flag = 1;
let secondTimer = setInterval(() => {
  ++flag;
  if(flag===10) {
    clearInterval(t);
    clearInterval(secondTimer);
  }
}, 2000);

注意:未测试!