Class: Libuv::Q::ResolvedPromise

Inherits:
Promise
  • Object
show all
Defined in:
lib/libuv/q.rb

Constant Summary

Constants inherited from Promise

Promise::MAKE_PROMISE

Instance Method Summary collapse

Methods inherited from Promise

#catch, #finally, #progress

Constructor Details

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

Returns a new instance of ResolvedPromise.

Raises:

  • (ArgumentError)


172
173
174
175
176
177
178
179
# File 'lib/libuv/q.rb', line 172

def initialize(loop, response, error = false)
	raise ArgumentError if error && response.is_a?(Promise)
	super()
	
	@loop = loop
	@error = error
	@response = response
end

Instance Method Details

#resolved?Boolean

Returns:

  • (Boolean)


209
210
211
# File 'lib/libuv/q.rb', line 209

def resolved?
	true
end

#then(callback = nil, errback = nil, progback = nil, &blk) ⇒ Object



181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/libuv/q.rb', line 181

def then(callback = nil, errback = nil, progback = nil, &blk)
	result = Q.defer(@loop)
	
	callback ||= blk
	
	@loop.next_tick {
		if @error
			begin
				result.resolve(errback.nil? ? Q.reject(@loop, @response) : errback.call(@response))
			rescue Exception => e
				#warn "Unhandled exception: #{e.message}\n#{e.backtrace.join("\n")}\n"
				result.reject(e)
				@loop.log(:error, :q_reject_cb, e)
			end
		else
			begin
				result.resolve(callback.nil? ? @response : callback.call(@response))
			rescue Exception => e
				#warn "\nUnhandled exception: #{e.message}\n#{e.backtrace.join("\n")}\n"
				result.reject(e)
				@loop.log(:error, :q_resolve_cb, e)
			end
		end
	}
	
	result.promise
end