1

いくつかのDeferrableがあり、それらがすべて完了したら、コールバックで何かを行う必要があります。

defers[0].callback do
    defers[1].callback do
        defers[2].callback do
            yield if block_given?
        end
    end
end

しかし、これは非常に醜いので、必要なコールバックの正確な数を知る必要があります。どうすればもっときれいな方法で書くことができますか?

jQueryのように、オブジェクト$.whenの配列を渡すことができ$.Deferredます。これは素晴らしいことですが、Rubyで実行できますか?

$.when(defers).done(function() {
    // do something
})

互換性のないライブラリを使用しているため、em-synchronyを使用できません。


解決:

multi = EventMachine::MultiRequest.new
defers.each.with_index do |defer, i|
    multi.add(i, defer)
end
multi.callback do
    yield if block_given?
end
4

1 に答える 1

3

gemを使用している場合は、を使用em-http-requestできますEventMachine::MultiRequest

そうでない場合、実装は簡単なem-http-request / lib / em-http / multi.rbので、自分で作成してください。

于 2013-02-08T23:38:42.003 に答える