我要做的就是这个,我有2个用户是攻击者和防御者。我想调用hit()函数,直到其中一个运行Health,hit()应该在转弯,第一个攻击者,然后是防御者,然后是攻击者等等,直到达到0马力。
我的想法是使用while循环来完成它,我得到的当前代码是来自hit()的console.log,一个无限循环。如果它不在循环中,那么来自hit()的数据会正确返回...我可以简单地在while循环中工作而不使用命中函数但是这意味着重复了很多代码,因为会有一些东西在实际发生命中之前要考虑。
如果你有一个替代while循环我可以接受想法,我也应该提到我是节点的新人,所以请尽量保持简单。谢谢。
这是代码的相关部分:
var prepareAttack = function(attacker,defender) {
connectdb().done(function(connection) {
query(connection,'SELECT * FROM members WHERE name = ?', attacker).done(function(result) {
var attackerData = result[0][0]
query(connection,'SELECT * FROM members WHERE name = ?', defender).done(function(result) {
var defenderData = result[0][0]
var attackerHp = attackerData.hp
var defenderHp = defenderData.hp
while(attackerHp > 0 && defenderHp > 0) {
hit(attackerData,defenderData).done(function(result){
defenderHp = result;
console.log(defenderHp)
})
hit(defenderData, attackerData).done(function(result) {
attackerHp = result;
console.log(attackerHp)
})
}
})
})
})
}
var hit = function (attackerData, defenderData) { // simplified code just relevant parts inside.
console.log('hitting')
var defer = Q.defer()
var newHp = 0;
defer.resolve(newHp)
return defer.promise
}