Sha256: 8d4eb373ab762a5382176426ef25db633772e559ce938e4b0ce381947422196a
Contents?: true
Size: 987 Bytes
Versions: 6
Compression:
Stored size: 987 Bytes
Contents
module BubbleWrap module Reactor class DependentDeferrable < DefaultDeferrable # 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). 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 end end end
Version data entries
6 entries across 6 versions & 1 rubygems