node.jsには、ドロップチャンスに基づいてdbからランダムな項目を選択する関数があります。私の友人は、dbからのいくつかのアイテムが入荷していないときに、いつでもドロップチャンスを編集するのが怠惰だからです。私はそれらも同様に計算する必要があります。したがって、在庫切れの商品がランダムに選択された場合、私は再び機能を実行する必要があります。在庫切れの場合は、在庫がある商品を取得するために再度機能を実行する必要があります。Node.jsレスポンスが空でない限り関数を繰り返す方法
私の質問は:希望の応答が得られるまで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);
}
有効な応答を待つ 'while'ループが必要なのでしょうか? – tadman
ええ、私はどこにループを置くべきですか?もし私がこの関数に入れて、それを再び呼び出すと、それは間違った応答になるでしょう。私は2つのループを実行して終了します – trixo
あなたはここで必要な回数だけ呼び出すことができますし、ループの内側にある*。 – tadman