class BubbleWrap::Reactor::DependentDeferrable
Public Class Methods
on(*args)
click to toggle source
args are Deferrable(s) which the returned Deferrable
depends on. returns a Deferrable
that depends on args. which:
succeeds only when every Deferrable in args succeeds fails immediately when any Deferrable in args fails
Have to be careful that deferred_args
for DependentDeferrable
is a list of deferred_args
from its children Deferrable(s).
# File motion/reactor/dependent_deferrable.rb, line 10 def self.on(*args) deferrable = self.new @children_deferrables = args @children_deferrables.each do |e| e.callback do |result| if @children_deferrables.all? {|a| a.deferred_status == :succeeded} deferrable.succeed(*@children_deferrables.map(&:deferred_args)) end end e.errback do |result| deferrable.fail(*e.deferred_args) end end deferrable end