class Airbrake::Promise
@since v1.7.0
@see github.com/ruby-concurrency/concurrent-ruby/blob/master/lib/concurrent/promise.rb<br>@see developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise<br><br>promise is either resolved or rejected.
JavaScript), which allows chaining callbacks that are executed when the
Represents a simplified promise object (similar to promises found in
#
def initialize
def initialize @on_resolved = [] @on_rejected = [] @value = {} @mutex = Mutex.new end
def reject(error)
-
(self)
-
Parameters:
-
error
(String
) --
def reject(error) @mutex.synchronize do @value['error'] = error @on_rejected.each { |callback| callback.call(error) } end self end
def rescue(&block)
-
(self)
-
Other tags:
- Yieldparam: error -
Other tags:
- Yield: - The error message from the API
def rescue(&block) @mutex.synchronize do if @value.key?('error') yield(@value['error']) return self end @on_rejected << block end self end
def resolve(response)
-
(self)
-
Parameters:
-
response
(Hash
) --
def resolve(response) @mutex.synchronize do @value = response @on_resolved.each { |callback| callback.call(response) } end self end
def then(&block)
-
(self)
-
Other tags:
- Yieldparam: response - Contains the `id` & `url` keys
Other tags:
- Yield: -
def then(&block) @mutex.synchronize do if @value.key?('id') yield(@value) return self end @on_resolved << block end self end