У меня есть простой сервер 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. Как мне этого добиться?

0
Hypothesis 1 Авг 2020 в 00:55

1 ответ

Лучший ответ

Вы должны определить 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);

NB: не тестировалось!

1
doom 31 Июл 2020 в 22:55