在Node js中克服了nio

时间:2014-01-21 10:13:49

标签: javascript node.js

请参阅以下功能:

在此函数行20中,在mysql数据检索之前执行。 然后我的结果出错了。

简而言之:

让我们进入函数中的两个步骤。

  1. (mysql查询的结果)交集(array 'myara') = ret然后。

  2. ret发送给客户端//第20行

  3. 我的问题是,它是在步骤1之后执行第2步。

    我的代码是:

      function updateNicknames(){
    
    
            setTimeout(function () {
    
    
    
                  var i;          
                  var myar = Object.keys(nicknames) ; 
                  var rest; 
                  rest = pre.filter(function(e) {
                  return myar.indexOf(e.t_mail) > -1;
                  }).map(function(e) { return e.t_mail;});
    
        nicknames[socket.nickname].emit('usernames', rest);
                for (i=0;i<rest.length;i++)
                  {
    
                           var ret;    
    
    var query = connection.query('select t_mail from chatlist where f_mail = "'+ rest[i] +'"',function(err, result, fields){
                if (err) throw err;
    
    
                        var myara = Object.keys(nicknames) ; 
                           ret = result.filter(function(e) {
                               return myara.indexOf(e.t_mail) > -1;
                                    }).map(function(e) { return e.t_mail;});
    
                         console.log('ret is:',ret);               
                }); 
    
              //line 20
                nicknames[rest[i]].emit('usernames', ret);
    
                  }
    
          }, 5000);     
    }
    

    我试过这个

      setTimeout(function () {
    
            nicknames[rest[i]].emit('usernames', ret);
    
       },2000);
    

    然后我收到错误

      

    无法调用未定义的方法'emit'。

    帮助我!

0 个答案:

没有答案