Class: Twterm::Promise::Callback

Inherits:
Object
  • Object
show all
Defined in:
lib/twterm/promise.rb

Instance Method Summary collapse

Constructor Details

#initialize(promise, on_fulfilled, on_rejected, next_promise) ⇒ Callback

Returns a new instance of Callback.



95
96
97
98
99
# File 'lib/twterm/promise.rb', line 95

def initialize(promise, on_fulfilled, on_rejected, next_promise)
  @promise = promise
  @on_fulfilled, @on_rejected = on_fulfilled, on_rejected
  @next_promise = next_promise
end

Instance Method Details

#has_on_fulfilled?Boolean

Returns:

  • (Boolean)


101
102
103
# File 'lib/twterm/promise.rb', line 101

def has_on_fulfilled?
  !on_fulfilled.nil?
end

#has_on_rejected?Boolean

Returns:

  • (Boolean)


105
106
107
# File 'lib/twterm/promise.rb', line 105

def has_on_rejected?
  !on_rejected.nil?
end

#invoke_on_fulfilled(value) ⇒ Object



109
110
111
112
113
114
115
116
117
118
# File 'lib/twterm/promise.rb', line 109

def invoke_on_fulfilled(value)
  if has_on_fulfilled?
    new_value = on_fulfilled.(value)
    next_promise.resolve(new_value)
  else
    next_promise.resolve(value)
  end
rescue => reason
  next_promise.reject(reason)
end

#invoke_on_rejected(reason) ⇒ Object



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/twterm/promise.rb', line 120

def invoke_on_rejected(reason)
  unless has_on_rejected?
    if has_on_fulfilled?
      next_promise.reject(reason)
    else
      raise reason unless has_on_fulfilled?
    end
    return
  end

  begin
    new_value = on_rejected.(reason)
    next_promise.resolve(new_value)
  rescue => reason
    next_promise.reject(reason)
  end
end