no.js: como usar setInterval e clearInterval?
Este é o meu JS em nodeJS.
function test(a, room, seconds) {
console.log(a, room, seconds);
}
intervalid = setInterval(test, 1000, 'room', 20);
console.log('intervalid', intervalid);
o que me devolve o resultado:
intervalid Timeout {
_called: false,
_idleTimeout: 1000,
_idlePrev: TimersList {
_idleNext: [Circular],
_idlePrev: [Circular],
_timer: Timer { '0': [Function: listOnTimeout], _list: [Circular] },
_unrefed: false,
msecs: 1000,
nextTick: false
},
_idleNext: TimersList {
_idleNext: [Circular],
_idlePrev: [Circular],
_timer: Timer { '0': [Function: listOnTimeout], _list: [Circular] },
_unrefed: false,
msecs: 1000,
nextTick: false
},
_idleStart: 377,
_onTimeout: [Function: test],
_timerArgs: [ 'room', 20 ],
_repeat: 1000
}
Considerando que em Javascript simples ele retorna um número inteiro Simples
Quando anexo o intervalo a um objecto de utilizador existente, por exemplo:
user.intervalid = setInterval(test, 1000, 'room', 20);
já não sou capaz de desimpedir o intervalo:
clearInterval(user.intervalid); // does not work
3
Author: Ghassen Louhaichi, 2017-10-05
3 answers
Usar o setInterval()
E se precisar de repetir a execução do seu bloco de código a intervalos especificados? Para isso, Node tem métodos chamados setInterval () e clearInterval (). A função setInterval () é muito parecida com setTimeout (), usando os mesmos parâmetros como a função callback, delay, e quaisquer argumentos opcionais para passar para a função callback.Um exemplo simples de setInterval() aparece abaixo:
var interval = setInterval(function(str1, str2) {
console.log(str1 + " " + str2);
}, 1000, "Hello.", "How are you?");
clearInterval(interval);
Isto é outra maneira quando você quer manter apenas um intervalo em execução a cada minuto
function intervalFunc() {
console.log("Hello!!!!");
}
setInterval(intervalFunc,1500);
No exemplo acima, o intervalFunc () irá executar cerca de 1500 milisegundos, ou 1,5 segundos, até que seja parado . Espero que isto ajude.
8
Author: Syed Ayesha Bebe, 2017-10-06 05:53:30
Pode usar "isto" no seguinte exemplo:
const dgram = require('dgram');
const message = Buffer.from('from raspberry pi 3');
const client = dgram.createSocket('udp4');
var count = 0;
function intervalFunc() {
count++;
client.send(message, 3001, 'localhost', (err) => {
//client.close();
});
if (count == '5') {
clearInterval(this);
}
}
setInterval(intervalFunc, 1500);
0
Author: farshad-nsh, 2018-04-05 07:16:29
Isto apanhou-me. Exactamente o mesmo cenário, a clearInterval simplesmente não estava a funcionar.
{[[2]} olhando no console, o resultado do setInterval foi um objeto, não um número. Estava muito confuso.
A solução era remover esta declaração de importação, que tinha entrado sorrateiramente:
import { setInterval } from 'timers';
0
Author: FTWinston, 2018-09-27 22:17:13