CNode

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

Lluoliangle发布于12 年前最后回复12 年前9 回复5213 浏览0 收藏
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)

R
racyily#2·12 年前

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

R
racyily#3·12 年前

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

H
hainee#4·12 年前

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

L
luckydrq#5·12 年前

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

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

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

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

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

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

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

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