Class: Celluloid::Promise::ResolvedPromise
- Defined in:
- lib/celluloid-promise/q.rb
Instance Method Summary collapse
-
#initialize(reactor, response, error = false) ⇒ ResolvedPromise
constructor
A new instance of ResolvedPromise.
- #then(callback = nil, errback = nil, &blk) ⇒ Object
Constructor Details
#initialize(reactor, response, error = false) ⇒ ResolvedPromise
Returns a new instance of ResolvedPromise.
111 112 113 114 115 116 117 118 |
# File 'lib/celluloid-promise/q.rb', line 111 def initialize(reactor, response, error = false) raise ArgumentError if error && response.is_a?(Promise) super() @error = error @response = response @reactor = reactor end |
Instance Method Details
#then(callback = nil, errback = nil, &blk) ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/celluloid-promise/q.rb', line 120 def then(callback = nil, errback = nil, &blk) result = ::Celluloid::Actor[:Q].defer(@reactor) callback ||= blk @reactor.async.perform do if @error if errback.nil? result.resolve(ResolvedPromise.new(@reactor, @response, true)) else result.resolve(errback.call(@response)) end else if callback.nil? result.resolve(@response) else result.resolve(callback.call(@response)) end end end result.promise end |