当在范围外满足某些条件时,如何清除 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);
注意:未测试!
我有一个像这样的简单 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);
注意:未测试!