跳到主要内容
CNode

For 循环里执行conn.query 出错时不用throw怎么跳出For循环。

社区
Lluoliangle发布于 12 年前最后回复 12 年前
952280
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)

N
nxycdl#912 年前
引用 luckydrq我怎么觉得 for 循环已经执行完了,因为conn.query是异步操作。

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

L
luoliangle#812 年前
引用 luckydrq我怎么觉得 for 循环已经执行完了,因为conn.query是异步操作。

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

L
luoliangle#712 年前
引用 hainee不能一次插入多条数据? conn.query("insert ……; insert ……");

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

L
luckydrq#512 年前

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

H
hainee#412 年前

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

R
racyily#212 年前

对了,还有个方法就是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; }//这里就可以跳出了 }); } }

R
racyily#112 年前

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

参与回复

登录后即可参与回复。登录