私は非同期にプログラミングするのが初めてです。私はループ内で8つのデータベースルックアップを実行する必要がある状況に遭遇しました。私はこれを達成する方法がわかりません。私のデータベースライブラリはコールバック関数でデータを返します。私は8行すべてを持てるまで私のコードを続けることができないので、8回のルックアップがすべて完了するまで中止する必要があります。コードを深くネストすることなく、多くの非同期データベース要求を実行できますか?
これは私が今想像するものの一種である:
db.world.Queue.find(@user.kingdom.troops_queue).on 'success', (troops_queue) ->
db.world.Queue.find(@user.kingdom.tanks_queue).on 'success', (tanks_queue) ->
#etc etc
これは恐ろしいと当然の総額ですが、私は自分のコードを許可するループにそれをロールアップする方法を考えることはできません一時停止し、最後の項目がいっぱいになったときのみ続行します。私はjQueryの.each()関数のようなものを探していましたが、その関数の動作は何ですか?それがすぐに続くか、ループが終了するのを待つか?
オプション3:手動参照カウント。 – Raynos
@Raynos:はい、あなたもそうすることができます... – thejh
+1の 'async'。 'async'には' parallel'以外の多くの関数があります: 'waterfall'、' forEach'などです。非同期コードを書いていると非常に役に立ちます。 –