我在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);
}
答案 0 :(得分:0)
为什么不采用递归方式呢?这很简单。如果使用异步函数,循环将不起作用。
if (response) {
return jResponse;
}
else {
return fnPickWinnerItem(chances,cb);
}