Class: Celluloid::Promise::ResolvedPromise

Inherits:
Promise
  • Object
show all
Defined in:
lib/celluloid-promise/q.rb

Instance Method Summary collapse

Constructor Details

#initialize(reactor, response, error = false) ⇒ ResolvedPromise

Returns a new instance of ResolvedPromise.

Raises:

  • (ArgumentError)


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