class Thread
Public Class Methods
delayer()
click to toggle source
# File lib/delayer/deferred/thread.rb, line 7 def self.delayer Delayer end
Public Instance Methods
add_child(chainable, name: caller_locations(1,1).first.to_s)
click to toggle source
# File lib/delayer/deferred/thread.rb, line 29 def add_child(chainable, name: caller_locations(1,1).first.to_s) __gen_promise(name).add_child(chainable) end
next(name: caller_locations(1,1).first.to_s, &proc)
click to toggle source
このDeferredが成功した場合の処理を追加する。 新しいDeferredのインスタンスを返す。 このメソッドはスレッドセーフです。 TODO: procが空のとき例外を発生させる
# File lib/delayer/deferred/thread.rb, line 15 def next(name: caller_locations(1,1).first.to_s, &proc) add_child(Delayer::Deferred::Chain::Next.new(&proc), name: name) end
Also aliased as: deferred
trap(name: caller_locations(1,1).first.to_s, &proc)
click to toggle source
このDeferredが失敗した場合の処理を追加する。 新しいDeferredのインスタンスを返す。 このメソッドはスレッドセーフです。 TODO: procが空のとき例外を発生させる
# File lib/delayer/deferred/thread.rb, line 24 def trap(name: caller_locations(1,1).first.to_s, &proc) add_child(Delayer::Deferred::Chain::Trap.new(&proc), name: name) end
Also aliased as: error
Private Instance Methods
__gen_promise(name)
click to toggle source
# File lib/delayer/deferred/thread.rb, line 35 def __gen_promise(name) promise = self.class.delayer.Promise.new(true, name: name) Thread.new(self) do |tt| __promise_callback(tt, promise) end promise end
__promise_callback(tt, promise)
click to toggle source
# File lib/delayer/deferred/thread.rb, line 43 def __promise_callback(tt, promise) begin result = tt.value self.class.delayer.new do promise.call(result) end rescue Exception => err self.class.delayer.new do promise.fail(err) end end end