Class: EmAlldone
- Inherits:
-
Object
- Object
- EmAlldone
- Defined in:
- lib/em_alldone.rb
Overview
Not a genuine Deferrable in that it doesn’t include EM::Deferrable. Callbacks set will be run when all the passed in deferrables have completed with either success or failure. Doesn’t support errbacks.
Defined Under Namespace
Modules: Version
Instance Method Summary collapse
- #callback(&block) ⇒ Object
-
#initialize(*deferrables, &block) ⇒ EmAlldone
constructor
A new instance of EmAlldone.
Constructor Details
#initialize(*deferrables, &block) ⇒ EmAlldone
Returns a new instance of EmAlldone.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/em_alldone.rb', line 9 def initialize(*deferrables, &block) deferrables = deferrables.flatten raise ArgumentError, "Must provide at least one argument" unless deferrables.size > 0 deferrables.each do |d| raise ArgumentError, "All arguments must be deferrables, but #{d.inspect} doesn't." unless d.respond_to?(:callback) && d.respond_to?(:errback) end @deferrable = deferrables[-1] if deferrables.size > 1 @recurse = EmAlldone.new deferrables[0...-1] end self.callback &block if block end |
Instance Method Details
#callback(&block) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/em_alldone.rb', line 25 def callback &block current_proc = Proc.new do @deferrable.callback &block @deferrable.errback &block end if @recurse @recurse.callback ¤t_proc else current_proc.call end end |