class Object
Public Instance Methods
deferred()
click to toggle source
Creates Future
object for JSON-RPC Server response @return [Future]
# File lib/bellite.rb, line 659 def deferred() cb = [] answer = false future = false reject = false _then = lambda do |*args| success = args[0] || false failure = args[1] || false cb << [success,failure] if answer answer.call end return future.promise end resolve = lambda do |result| while cb.size > 0 success, failure = cb.shift() begin if success != false change, res = success.call(result) if change and res===nil result = res end end rescue Exception => err if failure != false res = failure.call(err) elsif cb.size = 0 #excepthook end return reject.call(res==nil ? err : res) end end answer = lambda { resolve.call(result) } end reject = lambda do |error| while cb.size > 0 failure = cb.shift()[1] begin if failure != false change, res = failure.call(error) if change and res===nil error = res end end rescue Exception => err res = err if cb.size == 0 #excepthook end end end answer = lambda { reject.call(error) } end future = Future.new _then, resolve, reject return future end