コードは必要以上に複雑に見えるかもしれません。 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」という出力が期待できます。 、...