setInterval повертає об'єкт таймера, а не інтервал інтервалу

Я хочу очистити інтервал, використовуючи його intervalId , який я маю намір зберегти в локальному файлі.

Мені було враження, що присвоєння setInterval повертає його intervalId , але я, схоже, отримую замість [object Timer] .


var fs = require("fs");

var id = setInterval(function(){
  console.log("tick");
}, 1000);

console.log(id);

var stream = fs.createWriteStream("id");
stream.once('open', function(fd) {
  stream.write(id);
});

Я використовую вузол v4.9

6
додано Автор chovy, джерело
Дивно, він безумовно повертає для мене int (і це документально, щоб зробити це) .. Чи може node.js робити щось фанк з setInterval може бути?
додано Автор Mike Christensen, джерело
Я не використовую node.js, я просто пробував за допомогою автономного Javascript.
додано Автор Mike Christensen, джерело
Я думаю, node.js використовує метод setInterval і змінює його, а їх документація погана. Чи можете ви подивитися на об'єкт у відладчику? Можливо, у вас є деяка числова ідентифікація, яку ви можете зареєструвати ..
додано Автор Mike Christensen, джерело
Ага так, безумовно, це не вбудована функція setInterval, то, можливо, хтось з деяким досвідом унд.js буде чути тут з вашою відповіддю :)
додано Автор Mike Christensen, джерело
Я думаю, що мої ідеї будуть: 1) перевірити, чи інша версія node.js працює як документований, або 2) бачити, чи можете ви отримати доступ до власної функції window.setInterval або отримати посилання на нього перед вами завантажити node.js.
додано Автор Mike Christensen, джерело
Вибач, моя помилка - я думав, що це була утиліти бібліотеки Javascript. Я чув про це, але ніколи не перевіряв, що це таке.
додано Автор Mike Christensen, джерело
@MikeChristensen setInterval виглядає правильно. Яку версію вузла ви використовуєте, до речі?
додано Автор Aaron, джерело
@MikeChristensen Мій [об'єктовий таймер] має наступні вібрації всередині {repeat: 1, callback: [Function]}
додано Автор Aaron, джерело
Я думаю, це повідомлялося про github.com/joyent/node/issues/747
додано Автор Aaron, джерело
@DaveNewton Я просто вивчаю можливості setInterval діяти як завдання cron. Це лише ключі, які я, швидше за все, долучаю до БД. Це ще одна гілка. Спасибі, хлопці.
додано Автор Aaron, джерело
Це слід повернути ідентифікатор , OTOH, вихід консолі цього повідомлення показує щось інше після виклику setInterval .
додано Автор Dave Newton, джерело
Чому вам потрібно зберегти його у файлі?
додано Автор Dave Newton, джерело
@MikeChristensen Там немає вікна в додатку node.js, про який я знаю, оскільки вікна відсутні. Node.js - це реалізація JS на стороні сервера.
додано Автор Dave Newton, джерело

1 Відповіді

Це об'єкт таймера, але очищає те, як ви його очікуєте:

$ node ./test.js

var id = setInterval(function(){
  console.log("FOO");
  console.log(id);
}, 500);

setTimeout(function(){
  clearInterval(id);
}, 5000);

Виводить наступне протягом 5 секунд і очищає, як очікувалося:

FOO
{ repeat: 0, callback: [Function] }
FOO
{ repeat: 0, callback: [Function] }
FOO
{ repeat: 0, callback: [Function] }

More info: http://nodejs.org/docs/v0.5.10/api/timers.html

2
додано
dev-ua/node
dev-ua/node
1 122 учасників

Chat for Node.js developers. We love other non-frontend JS environments too!

ІТ КПІ - JavaScript
ІТ КПІ - JavaScript
504 учасників

співтовариство javascript розробників в Telegram