Class: Libuv::Q::ResolvedPromise

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

Instance Attribute Summary

Attributes inherited from Promise

#trace

Instance Method Summary collapse

Methods inherited from Promise

#catch, #finally, #progress, #ruby_catch, #value

Constructor Details

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

Returns a new instance of ResolvedPromise.

Raises:

  • (ArgumentError)


176
177
178
179
180
181
182
183
# File 'lib/libuv/q.rb', line 176

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

    @reactor = reactor
    @error = error
    @response = response
end

Instance Method Details

#resolved?Boolean

Returns:

  • (Boolean)


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

def resolved?
    true
end

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



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

def then(callback = nil, errback = nil, progback = nil)
    result = Q.defer(@reactor)
    callback = Proc.new if block_given?

    @reactor.next_tick {
        if @error
            begin
                result.resolve(errback ? errback.call(@response) : Q.reject(@reactor, @response))
            rescue Exception => e
                result.reject(e)
                @reactor.log e, 'performing promise rejection callback', @trace
            end
        else
            begin
                result.resolve(callback ? callback.call(@response) : @response)
            rescue Exception => e
                result.reject(e)
                @reactor.log e, 'performing promise resolution callback', @trace
            end
        end
    }

    result.promise
end