首页 > 解决方案 > 当在范围之外满足某些条件时,如何清除 WebSocket 中的间隔?

问题描述

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

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

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

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

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

标签: javascriptnode.jswebsocketws

解决方案


您必须t在函数之外定义以扩展范围

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

然后在标志正常时清除它

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);

注意:未经测试!


推荐阅读