Module: Delayer::Deferred::Deferredable
Overview
なんでもDeferred
Defined Under Namespace
Classes: Callback
Constant Summary collapse
Instance Method Summary collapse
-
#+@ ⇒ Object
self が終了して結果が出るまで呼び出し側のDeferredを停止し、 self の結果を返す。 呼び出し側はDeferredブロック内でなければならないが、 _Deferred#next_ を使わずに 直接戻り値を得ることが出来る。 self が失敗した場合は、呼び出し側のDeferredの直近の trap ブロックが呼ばれる。.
-
#call(value = nil) ⇒ Object
Deferredを直ちに実行する.
- #callback ⇒ Object
-
#cancel ⇒ Object
この一連のDeferredをこれ以上実行しない.
-
#fail(exception = nil) ⇒ Object
Deferredを直ちに失敗させる.
-
#next(&proc) ⇒ Object
(also: #deferred)
このDeferredが成功した場合の処理を追加する。 新しいDeferredのインスタンスを返す.
-
#trap(&proc) ⇒ Object
(also: #error)
このDeferredが失敗した場合の処理を追加する。 新しいDeferredのインスタンスを返す.
-
#wait(second) ⇒ Object
second 秒待って次を実行する ==== Args [second] 待つ秒数(second) ==== Return Deferred.
Instance Method Details
#+@ ⇒ Object
self が終了して結果が出るまで呼び出し側のDeferredを停止し、 self の結果を返す。呼び出し側はDeferredブロック内でなければならないが、 _Deferred#next_ を使わずに直接戻り値を得ることが出来る。self が失敗した場合は、呼び出し側のDeferredの直近の trap ブロックが呼ばれる。
35 36 37 38 39 40 41 42 |
# File 'lib/delayer/deferred/deferredable.rb', line 35 def +@ interrupt = Fiber.yield(self) if interrupt.ok? interrupt.value else Delayer::Deferred.fail(interrupt.value) end end |
#call(value = nil) ⇒ Object
Deferredを直ちに実行する
24 25 |
# File 'lib/delayer/deferred/deferredable.rb', line 24 def call(value = nil) _call(:ok, value) end |
#callback ⇒ Object
49 50 51 |
# File 'lib/delayer/deferred/deferredable.rb', line 49 def callback @callback ||= Callback.new(CallbackDefaultOK, CallbackDefaultNG) end |
#cancel ⇒ Object
この一連のDeferredをこれ以上実行しない
45 46 47 |
# File 'lib/delayer/deferred/deferredable.rb', line 45 def cancel @callback = Callback.new(CallbackDefaultOK, CallbackDefaultNG).freeze end |
#fail(exception = nil) ⇒ Object
Deferredを直ちに失敗させる
28 29 |
# File 'lib/delayer/deferred/deferredable.rb', line 28 def fail(exception = nil) _call(:ng, exception) end |
#next(&proc) ⇒ Object Also known as: deferred
このDeferredが成功した場合の処理を追加する。新しいDeferredのインスタンスを返す
13 14 |
# File 'lib/delayer/deferred/deferredable.rb', line 13 def next(&proc) _post(:ok, &proc) end |
#trap(&proc) ⇒ Object Also known as: error
このDeferredが失敗した場合の処理を追加する。新しいDeferredのインスタンスを返す
19 20 |
# File 'lib/delayer/deferred/deferredable.rb', line 19 def trap(&proc) _post(:ng, &proc) end |
#wait(second) ⇒ Object
second 秒待って次を実行する
Args
- second
-
待つ秒数(second)
Return
Deferred
58 59 |
# File 'lib/delayer/deferred/deferredable.rb', line 58 def wait(second) self.next{ Thread.new{ sleep(second) } } end |