コールバックは最も簡単な方法ですが、コールバックを使用したくないため (jQuery.queue()
では必要です - とにかく再帰的なコールバックが必要です)、メソッドに bool を返すようにすることができます。
$('button').click(function()
{
var theObjects = [a,b,c,d];
for (var i=0;i<theObjects.length;i++)
{
if (theObjects[i].makeStuffHappen() === false)
{
break;//or throw, or whatever...
}
}
});
もちろん、呼び出されるオブジェクトによってメソッドが異なる可能性は十分にあります。配列の代わりにオブジェクトを使用することで、これを回避できます。この場合、イベント ハンドラーは次のようになります。
$('button').click(function()
{
var theObjects = {a:'aMethod',b:'bMethod',c:'cMethod'};
for(var i in theObjects)
{
if (theObjects.hasOwnProperty(i))
{
if(window[i][theObjects[i]]() === false)
{
break;//or throw, or return...
}
}
}
});
念のために言っておきますが、ここでなんらかの形式のコールバックを使用したくない理由がわかりません。それが最も簡単な方法だからです...しかし、もちろん、それは私の関心事ではありません... :- )
さて、あなたのゲームを簡単に見てみました... 楽しそうです、それに取り組み続けてください:)。ところで、あらゆる場所でコールバックを使用することから一歩離れています。
$('#placeBet').click(function() {
placeBet();
});
次のように記述できます。
$('#placeBet').click(placeBet);
後者では、placeBet はコールバック関数です。あなたの主な関心事はここにあると思います:
player.printHand();
dealer.printHand(isDealerHidden);
ここで行うことは、最後にこれを追加して printHand 関数を変更することです。
if (this.name !== 'dealer')
{
dealer.printHand(isDealerHidden);
}
必要に応じてこれを機能させるには、スクリプトを十分に読んでいませんが、アイデアはわかります...簡単な方法は、ディーラーを明示的にアニメーション化するのではなく、プレーヤーの手のすべてのアニメーターを変更して終了することですプレーヤーのアニメーションが完了した後にディーラーをアニメーション化するコード... 意味不明なことを言っているのはわかっていますが、仕事中です...そして病気です...とにかく頑張ってください。あなたの進捗状況を確認するのにもう少し時間がかかるかもしれません。今夜あなたのスクリプトをもっと詳しく読んで、このドリブルを実際に機能するものに編集してください:-)