下面这段代码的问题是,在前面的语句执行完后,在后面eventproxy中,打印一个字符,按说每次循环只打印一次,当循环长度为2的时候,应该打印2次字符串,但是实际却打印了不止2次,麻烦大神帮我看看是什么问题??谢谢了!!!! let len = 2; let i = 0; (function next(i,len,callback) { if(i < len) { let sql1 = util.format(‘select count(OnType) as cnt1 from %s where OnType = 0 and ’ + ’ UpdateTime = “%s” and GwType = “%s” ‘,GwOnOffHist,yesterday,res[i][“GwType”]); mysqlClient(sql1,function(err,res) { if(err) { lightLog.error(‘pid:’,process.pid,’’,err.stack); } else{ // lightLog.debug(‘pid:’,process.pid,’’,res); // console.log(res); ep.emit(‘data1’,res); } }); let sql2 = util.format(‘select count(OnType) as cnt2 from %s where OnType = 1 and ’ + ’ UpdateTime = “%s” and GwType = “%s” ‘,GwOnOffHist,yesterday,res[i][“GwType”]); mysqlClient(sql2,function(err,res) { if(err) { lightLog.error(‘pid:’,process.pid,’’,err.stack); } else{ // lightLog.debug(‘pid:’,process.pid,’’,res); // console.log(res); ep.emit(‘data2’,res); } }); let sql3 = util.format(‘select count(OnType) as cnt3 from %s where OnType = 2 and ’ + ’ UpdateTime = “%s” and GwType = “%s” ‘,GwOnOffHist,yesterday,res[i][“GwType”]); mysqlClient(sql3,function(err,res) { if(err) { lightLog.error(‘pid:’,process.pid,’’,err.stack); } else{ // lightLog.debug(‘pid:’,process.pid,’’,res); // console.log(res); ep.emit(‘data3’,res); } }); let sql4 = util.format(‘select count(OffType) as cnt4 from %s where OffType = 0 and ’ + ’ UpdateTime = “%s” and GwType = “%s” ‘,GwOnOffHist,yesterday,res[i][“GwType”]); mysqlClient(sql4,function(err,res) { if(err) { lightLog.error(‘pid:’,process.pid,’’,err.stack); } else{ // lightLog.debug(‘pid:’,process.pid,’’,res); // console.log(res); ep.emit(‘data4’,res); } }); let sql5 = util.format(‘select count(OffType) as cnt5 from %s where OffType = 1 and ’ + ’ UpdateTime = “%s” and GwType = “%s” ‘,GwOnOffHist,yesterday,res[i][“GwType”]); mysqlClient(sql5,function(err,res) { if(err) { lightLog.error(‘pid:’,process.pid,’’,err.stack); } else{ // lightLog.debug(‘pid:’,process.pid,’’,res); // console.log(res); ep.emit(‘data5’,res); } }); let sql6 = util.format(‘select count(OffType) as cnt6 from %s where OffType = 2 and ’ + ’ UpdateTime = “%s” and GwType = “%s” ‘,GwOnOffHist,yesterday,res[i][“GwType”]); mysqlClient(sql6,function(err,res) { if(err) { lightLog.error(‘pid:’,process.pid,’’,err.stack); } else{ // lightLog.debug(‘pid:’,process.pid,’’,res); // console.log(res); ep.emit(‘data6’,res); next(i + 1,len,callback); } }); ep.tail(‘data1’,‘data2’,‘data3’,‘data4’,‘data5’,‘data6’,function(data1,data2,data3,data4,data5,data6) { console.log(‘qq’);//就是在这里打印字符串
// console.log(data1);
// console.log(data2);
// console.log(data3);
// console.log(data4);
// console.log(data5);
// console.log(data6);
// let sql = util.format('insert into %s (Layer1ID,GwType,StrgyOnNum,StrgyOffNum,ForceOnNum,ForceOffNum,UpdateTime) ' +
// ' values(%s,%s,%s,%s,%s,%s,"%s")',OnOffNumRec,1,i,data1[0]["cnt1"],data2[0]["cnt2"],
// data3[0]["cnt3"],data4[0]["cnt4"],yesterday);
// mysqlClient(sql,function(err,res) {
// if(err) {
// lightLog.error('pid:',process.pid,'',err.stack);
// }
// else{
// // lightLog.debug('pid:',process.pid,'',res);
// }
// });
});
}
else{
callback();
}
}(0,len,function() {
}));
我虽然不知道你的 JS 代码哪里挂了,但是我知道你的 md 的代码挂了
@steambap 什么意思?能否说的清楚一点
这格式,完全没有看的想法
@quanpf2481 好像是在说markdown格式
能把代码看完的都是有耐心的好人。 给你点提示,你对 tail 和 event 一无所知。 现在还用 eventproxy ,不想吐槽。
昨天刚看完eventproxy 感觉不喜欢它处理异步的方法 还是 async 好用 看着舒服
@MiYogurt 老哥 你现在用什么管理异步
@dengnan123 https://nodelover.me/course/js-async 这么好的网站你竟然不知道。 async
@nullcc 刚入门,格式应该怎么样来写呢??求大神指点
@MiYogurt 能否说的细一点,新手入门,还望多多指教
看视频啊。 es7 的语法啊 async、await 啊。
@MiYogurt 我真不知道,才写node三个月而已。。。