循环nodejs中的setInterval

setInterval in loop nodejs

本文关键字:setInterval 中的 nodejs 循环      更新时间:2023-09-26

我知道还有其他类似的问题,但我的代码似乎不起作用。你能看看我的代码,告诉我哪里错了吗。

 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();

不要忘记调用函数:

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

请注意,您的延迟行为可能与预期不符。目前,您将在5秒钟后执行所有方法。如果您希望每次呼叫之间有5秒的延迟,请创建一个队列。

您没有完全填充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); // <------------------