いくつかの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