代码可能看起来比它需要的更复杂我想将 i 传递给 balm 函数,但它返回 undefined 因为我做错了。
只是额外的信息:这是针对我正在编写的游戏的服务器。在控制台中运行节点。
for (i=30;i>=0;i--){
setTimeout(function balm(i){
this_sql ="UPDATE game_moblist SET hp = least(max_hp, hp +"+Math.round(i/2)+") WHERE id ="+mobid
connection.query(this_sql, function(err, rows, fields) {if (err) err=null});
console.log(this_sql)
this_sql ="SELECT hp, max_hp FROM game_moblist WHERE id ="+mobid; //emite catch all update pointint to hp..
connection.query(this_sql, function(err, rows, fields) {if (err) throw err;
socket.emit ('updatemisc',handler,rows);//eval handler using args
if (rows[0].hp==rows[0].max_hp){
i=0;
return i;
}
});
},(31-i)*333);
}
这是一个简化版本,只是展示了这个概念
for (i=3;i>=0;i--){
setTimeout(function foo(i){
console.log(foo)
},1000*i);
我希望在 1000 毫秒后出现以下输出“1” 在 2000 毫秒后出现“2” 在 3000 毫秒后出现“3” 编辑:当我在 setTimeout() 之外定义函数然后像这样调用它 setTimeout(balm(i) ……