For 循环里执行conn.query 出错时不用throw怎么跳出For循环。
发布于 10 年前 作者 luoliangle 4609 次浏览 最后一次编辑是 8 年前
function uploadInfos(recJSON,conn,callback){
userId=recJSON.userIn
  for (var i in recJSON.Infos){
      var error;
     conn.query('INSERT INTO log SET data=?', recJSON.Infos[i].data, function(err, result) {
    if (err) {callback(err,null,userId); }//这里我用的callback回调,不用throw因为callback里还有记录日志的操作。
  });
 }
}

请问怎么跳出for循环,或者直接return跳出函数,谢谢!

9 回复

如果是数组循环的话,可以当出现err时,让i=数组.length。如果是对象的话,可以if(err) break;

对了,还有个方法就是goto语句了,可以这样 function uploadInfos(recJSON,conn,callback){ userId=recJSON.userIn lookHere: for (var i in recJSON.Infos){ var error; conn.query(‘INSERT INTO log SET data=?’, recJSON.Infos[i].data, function(err, result) { if (err) { break lookHere; }//这里就可以跳出了 }); } }

谢谢,我试试看

不能一次插入多条数据? conn.query(“insert ……; insert ……”);

我怎么觉得 for 循环已经执行完了,因为conn.query是异步操作。

对啊。。我也觉得

可以的,我后来才知道insert into table (NoteId,NoteUserId) values (xxx,xxxx),(xxxx,xxxx) 就可以插入多条了

是执行完了,我前面的理解又问题,后来问了人,用递归解决了这个问题

@luoliangle nxycdl 5楼•0 秒前
怎么解决的 for 里面是异步的。用foreach 吗。

回到顶部