Method: ReactiveRecord.run_blocks_to_load

Defined in:
lib/reactive_record/active_record/reactive_record/while_loading.rb

.run_blocks_to_load(fetch_id, failure = nil) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/reactive_record/active_record/reactive_record/while_loading.rb', line 46

def self.run_blocks_to_load(fetch_id, failure = nil)
  if @blocks_to_load
    blocks_to_load_now = @blocks_to_load.select { |data| data.first == fetch_id }
    @blocks_to_load = @blocks_to_load.reject { |data| data.first == fetch_id }
    @load_stack ||= []
    blocks_to_load_now.each do |data|
      id, promise, block = data
      @load_stack << @loads_pending
      @loads_pending = nil
      result = block.call(failure)
      if check_loads_pending and !failure
        @blocks_to_load << [Base.last_fetch_at, promise, block]
      else
        promise.resolve result
      end
      @loads_pending = @load_stack.pop
    end
  end
rescue Exception => e
  React::IsomorphicHelpers.log "ReactiveRecord.load exception raised during retry: #{e}", :error
end