我有一些Deferrables,当所有这些都完成后我需要在回调中做一些事情。
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
答案 0 :(得分:3)
如果您使用的是em-http-request
gem,则可以使用EventMachine::MultiRequest
。
如果没有,实施很简单em-http-request / lib / em-http / multi.rb
,请自行制作。