我有一些 Deferables,当所有这些都完成时,我需要在回调中做一些事情。
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