Node.js while循环返回deffered结果

时间:2015-07-19 15:10:34

标签: node.js function while-loop callback

我要做的就是这个,我有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

}

0 个答案:

没有答案