setInterval в цикле nodejs - PullRequest
       2

setInterval в цикле nodejs

1 голос
/ 15 марта 2012

Я знаю, что есть и другие вопросы, подобные этому, но мой код просто не работает.Не могли бы вы взглянуть на мой код и сказать, где я не прав?

 var mysql = require('mysql');

var client = mysql.createClient({
  user: 'jed',
  password: 'jed8703',
  host: 'localhost',
  database: 'jedtest'
});

//var query = client.query(
//  'INSERT INTO testtable '+
//  'SET testid = ?, name = ?, value = ?',
//  [1, 'test', 'test']
//);


client.query(
  'SELECT * FROM testtable',
  function selectCb(err, results, fields) {
    if (err) {
      throw err;
    }

    console.log(results[0].Name);
    for(var i in results)
        {
            (function(y)
            {
                setInterval(function() {
                  console.log(results[y].Name + 'value:' + results[y].Value );
                }, 5000 );
            })
        }
  }
);

client.end();

Ответы [ 2 ]

6 голосов
/ 15 марта 2012

Не забудьте вызвать функцию:

        (function(y)
        {
            setInterval(function() {
              console.log(results[y].Name + 'value:' + results[y].Value );
            }, 5000 );
        })(i); // <------- Added (i);

Обратите внимание, что ваша задержка может работать не так, как ожидалось. В настоящее время вы выполняете все методы через 5 секунд. Создайте очередь, если вы хотите, чтобы между каждым вызовом была задержка в 5 секунд.

2 голосов
/ 15 марта 2012

Вы не заполняете переменную y, попробуйте заменить:

   (function(y)
   {
      setInterval(function() {
        console.log(results[y].Name + 'value:' + results[y].Value );
      }, 5000 );
   })

С:

   (function(y)
   {
      setInterval(function() {
        console.log(results[y].Name + 'value:' + results[y].Value );
      }, 5000 );
   })(i); // <------------------
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...