Node.js如何重复函数,直到响应不为空

时间:2017-11-29 19:23:23

标签: node.js

我在node.js中有函数,它根据丢弃机会从db中选择随机项。因为我的朋友懒得编辑丢弃机会,因为db中的某些项目没有库存。我也必须计算这些。因此,当随机选择缺货的项目时,我需要再次运行功能,如果缺货,我需要再次运行功能以获得库存中的功能。

我的问题是:如何在node.js中重复函数,直到获得所需的响应? 我的功能看起来像这样。

function fnPickWinnerItem(chances,cb){
var ajChances=chances;
var iRandomNumber=getRandomInt(ajChances[0].chanceStart,ajChances[ajChances.length-1].chanceEnds);
var aDrop=ajChances.map(function(data){
    var input=data;
    var iGroupId=input.groupId
    var iStartChance=input.chanceStart;
    var iEndChance=input.chanceEnds;
    var jResponse={"groupId":iGroupId, "status":"win"}
    var jResponseFalse={"groupId":"none", "status":"false"}
    if(iStartChance<=iRandomNumber&&iRandomNumber<=iEndChance){
        // var response= select from db & validate -> if ok return true else 
    false
        if(response){
          return jResponse;
        }
        else{run function again}
    }
    else{
        return jResponseFalse;
    }

})
cb(aDrop);

}

1 个答案:

答案 0 :(得分:0)

为什么不采用递归方式呢?这很简单。如果使用异步函数,循环将不起作用。

if (response) {
    return jResponse;
}
else {
    return fnPickWinnerItem(chances,cb);
}