【问题标题】:How to clear interval in WebSocket when some condition is met outside the scope?当在范围之外满足某些条件时,如何清除 WebSocket 中的间隔?
【发布时间】:2020-08-01 06:55:41
【问题描述】:

我有一个像这样的简单 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.flag 达到某个数字(如 10)时,我想清除第一个间隔。 我如何做到这一点?

【问题讨论】:

  • 哪个间隔?你有两个。
  • @Taplar 第一个间隔标记为 const t。
  • const t 的范围太小。该箭头函数之外的任何内容都不能引用它。

标签: javascript node.js websocket ws


【解决方案1】:

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

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

flag ok时再清除

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

注意:未测试!

【讨论】:

    猜你喜欢
    • 2019-04-29
    • 2016-03-13
    • 2020-05-16
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2022-12-08
    • 1970-01-01
    相关资源
    最近更新 更多