请参阅以下功能:
在此函数行20中,在mysql数据检索之前执行。 然后我的结果出错了。
简而言之:
让我们进入函数中的两个步骤。
(mysql查询的结果)交集(array 'myara') = ret
然后。
ret
发送给客户端//第20行
我的问题是,它是在步骤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'。
帮助我!